当一个模块调用另一个模块加载pickle时发生AttributeError

时间:2018-02-22 13:17:11

标签: python packages pickle

假设我有pickle文件foo.pkl,具体取决于foo.py中定义的类。我还有一个模块load_foo.py,其中包含加载foo.pkl的函数:

from sklearn.externals import joblib
from foo import *

def load():
  pkl_path = ...
  return joblib.load(pkl_path)

foo.pklfoo.pyload_foo.py位于同一个包中。当我调用load时,它工作正常。

现在我正在编写一个新模块test_load.py,它位于另一个包中。它导入load_foo并调用load。在这种情况下,由于load未导入AttributeErrorfoo.py失败并显示editor.clear();

你为什么会这样,以及如何解决它?

1 个答案:

答案 0 :(得分:1)

这就是pickle的工作方式。

要反序列化实例,您必须导入相关的类。所以你只需要添加test_load.py

from foo import *

(或至少from foo import TheClassName)。