[issue5180] 3.1 cannot unpickle 2.7-created pickle

Alexander Belopolsky report at bugs.python.org
Sun Jun 27 03:25:23 CEST 2010


Alexander Belopolsky <belopolsky at users.sourceforge.net> added the comment:

If I disable _pickle, I get a more meaningful trace:


  File "Tools/pybench/pybench.py", line 954, in <module>
    PyBenchCmdline()
  File "/Users/sasha/Work/python-svn/py3k-commit/Tools/pybench/CommandLine.py", line 349, in __init__
    rc = self.main()
  File "Tools/pybench/pybench.py", line 888, in main
    bench = pickle.load(f)
  File "/Users/sasha/Work/python-svn/py3k-commit/Lib/pickle.py", line 1321, in load
    encoding=encoding, errors=errors).load()
  File "/Users/sasha/Work/python-svn/py3k-commit/Lib/pickle.py", line 830, in load
    dispatch[key[0]](self)
  File "/Users/sasha/Work/python-svn/py3k-commit/Lib/pickle.py", line 1055, in load_inst
    klass = self.find_class(module, name)
  File "/Users/sasha/Work/python-svn/py3k-commit/Lib/pickle.py", line 1115, in find_class
    __import__(module, level=0)
  File "/Users/sasha/Work/python-svn/py3k-commit/Tools/pybench/Unicode.py", line 17
    s = unicode(u''.join(map(str,range(100))))
                  ^
SyntaxError: invalid syntax


Apparently, pybench/Unicode.py has never been converted to py3k. This is likely not the only problem:

>>> from pybench import *
>>> import pickle
>>> pickle.load(open('27.bench'))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/sasha/Work/python-svn/py3k-commit/Lib/pickle.py", line 1321, in load
    encoding=encoding, errors=errors).load()
  File "/Users/sasha/Work/python-svn/py3k-commit/Lib/pickle.py", line 829, in load
    assert isinstance(key, bytes_types)
AssertionError

This looks like the infamous bytes vs string problem ...

----------
nosy: +belopolsky

_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue5180>
_______________________________________


More information about the Python-bugs-list mailing list