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脚本的一部分,可能会有一些帮助。