Python 模块导入pickle行为
我正在保存一个依赖于导入名为Python 模块导入pickle行为,python,pickle,Python,Pickle,我正在保存一个依赖于导入名为foo的模块的sklearn估计器 剧本是这样的: from foo import * import pickle import sklearn estimator = ... pickle.dump(estimator, open('file', 'wb')) 但是,当尝试在另一个脚本中重新加载该估计器时: import pickle estimator = pickle.load(open('file', 'rb')) 我得到以下错误: ModuleNo
foo
的模块的sklearn估计器
剧本是这样的:
from foo import *
import pickle
import sklearn
estimator = ...
pickle.dump(estimator, open('file', 'wb'))
但是,当尝试在另一个脚本中重新加载该估计器时:
import pickle
estimator = pickle.load(open('file', 'rb'))
我得到以下错误:
ModuleNotFoundError:没有名为'foo'的模块
虽然实际上不需要foo,但我只是用它来构建估计器,但是用它来做预测,比如说,foo是不需要的
你有没有想过如何解决这个问题
我试图使用dill库并将foo中的函数保存在同一个pickle文件中,但仍然出现错误。您在构建模型时使用foo,而在使用pickle将其保存到文件时,您正在将其与文件一起转储。所以这就是为什么它期待而预测什么是最简单的解决方法?我可以在本地添加函数,但我不希望必须重新运行第一个脚本。有没有办法摆脱pickle文件中的这种依赖关系?当您在导入中定义它时,它不会影响pickle.load方法,除非或其他明智的foo必须对模型创建和在文件中转储模型做些什么。外部脚本与model creaton有什么关系?请粘贴代码,这是foo脚本的一部分,可能会有一些帮助。