最近,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
的工作原理。