假设我有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.pkl
,foo.py
和load_foo.py
位于同一个包中。当我调用load
时,它工作正常。
现在我正在编写一个新模块test_load.py
,它位于另一个包中。它导入load_foo
并调用load
。在这种情况下,由于load
未导入AttributeError
,foo.py
失败并显示editor.clear();
。
你为什么会这样,以及如何解决它?
答案 0 :(得分:1)
这就是pickle
的工作方式。
要反序列化实例,您必须导入相关的类。所以你只需要添加test_load.py
:
from foo import *
(或至少from foo import TheClassName
)。