使用Dill时出现奇怪的无效pickle协议错误

时间:2016-07-01 22:44:00

标签: python-3.x dill

最近,Dill完全停止了为我工作。它这样做:

>>> import dill
>>> dill.dumps([1,2,3])
b'\x80\x03]q\x00(K\x01K\x02K\x03e.'
>>> dill.loads(_)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python34\lib\site-packages\dill\dill.py", line 260, in loads
    return load(file)
  File "C:\Python34\lib\site-packages\dill\dill.py", line 250, in load
    obj = pik.load()
  File "C:\Python34\lib\pickle.py", line 1039, in load
    dispatch[key[0]](self)
  File "C:\Python34\lib\pickle.py", line 1066, in load_proto
    raise ValueError("unsupported pickle protocol: %d" % proto)
ValueError: unsupported pickle protocol: 93

每次都有不同的数字。这可能是一个月前开始的;用pip重新安装Dill没有帮助。

从使用调试器逐步执行它看起来它正好从数据开头读取协议版本,然后读取pickle数据中的第一条指令之一,并出于某种原因将其解释为协议版本。我真的不知道,因为我不太了解pickle的工作原理。

0 个答案:

没有答案