"在框架结束前筋疲力尽#34;当使用Dill时,代码可以与Pickle一起使用

时间:2015-12-16 18:51:00

标签: python python-3.x serialization pickle dill

我正在开发一个使用Pickle实现存档游戏的游戏项目(我知道这样做的缺点 - 让我们不在这里讨论)。这非常有效:遗憾的是标准的Pickle无法处理我希望在未来版本中做的一些事情,所以我转而转向Dill。遗憾的是,它不起作用:每当加载保存时它都会_pickle.UnpicklingError: pickle exhausted before end of frame

重申:此代码和我使用的测试用例与Pickle完美配合。它只与Dill有问题。

我像这样导入Dill:

try:
    import dill as pickle
except ImportError:
    print("Failed to load Dill serialization library: some features may not work correctly.")
    import pickle

完整的追溯是这样的:

   Traceback (most recent call last):
  File "C:/Users/Schilcote/workspace/pyweek19/main.py", line 605, in game_init
    gamestate=pickle.load(open(os.path.join(_savedir,"save.sav"),"rb"))
  File "C:\Python34\lib\site-packages\dill\dill.py", line 199, in load
    obj = pik.load()
  File "C:\Python34\Lib\pickle.py", line 1036, in load
    dispatch[key[0]](self)
  File "C:\Python34\Lib\pickle.py", line 1321, in load_global
    module = self.readline()[:-1].decode("utf-8")
  File "C:\Python34\Lib\pickle.py", line 247, in readline
    "pickle exhausted before end of frame")
_pickle.UnpicklingError: pickle exhausted before end of frame

我不知道如何开始诊断。发生了什么事?

编辑:

为了澄清,错误发生在 de 序列化。

1 个答案:

答案 0 :(得分:1)

也许你是(或者你)使用CPython 3.4?如果是,there was a bug should be fixed already

我也有这个问题,不是我的计算机,它有Python 3.4.4,而是使用Github的Travis,它使用的是3.4.2。