Python 修复错误:无法从其他计算机加载pickle文件

Python 修复错误:无法从其他计算机加载pickle文件,python,pickle,Python,Pickle,我需要从另一个项目加载一个pickle文件。这个项目的文件夹结构似乎有点不同。i、 e:模型类是在main中定义的,但在我的项目中,它放在了“model.fraud\u model.py”中。因此,当我尝试加载pickle文件时,会出现以下异常: 'module' object has no attribute 'FraudModel' 我正在尝试从以下内容修改pickle文件: ccopy_reg _reconstructor p0 (c__main__ FraudModel 为此: cc

我需要从另一个项目加载一个pickle文件。这个项目的文件夹结构似乎有点不同。i、 e:模型类是在main中定义的,但在我的项目中,它放在了“model.fraud\u model.py”中。因此,当我尝试加载pickle文件时,会出现以下异常:

'module' object has no attribute 'FraudModel'
我正在尝试从以下内容修改pickle文件:

ccopy_reg
_reconstructor
p0
(c__main__
FraudModel
为此:

ccopy_reg
_reconstructor
p0
(cmodel.fraud_model
FraudModel
它是有效的。但此解决方案将更改pickle文件。我不要这个。所以我手工输入:

from model.fraud_model import FraudModel
import sys
sys.modules['model.fraud_model'] = FraudModel
但这似乎不起作用。请帮我解决这个问题


谢谢

pickler希望能够找到
\uuu main\uuuu.FraudModel
,因此您只需修改python环境,使其看起来像最初对对象进行pickle时一样

您应该能够通过将类添加到
\uuuuu main\uuuu
模块来实现这一点,每个python程序都将拥有该模块

from model.fraud_model import FraudModel
import sys
sys.modules['__main__'].FraudModel = FraudModel

然后,您可以解除对文件的pickle,它应该会找到类。

pickler希望能够找到
\uuuu main\uuuu.FraudModel
,因此您只需修改python环境,使其看起来像最初对对象进行pickle时一样

您应该能够通过将类添加到
\uuuuu main\uuuu
模块来实现这一点,每个python程序都将拥有该模块

from model.fraud_model import FraudModel
import sys
sys.modules['__main__'].FraudModel = FraudModel

然后你可以取消粘贴该文件,它应该会找到该类。

可能是@BlownhitherMa的副本我已经编辑了我的帖子。其实我以前也做过。但它仍然不起作用。也许
sys.modules['FraudModel']=FraudModel
,因为这是缺少的属性?可能是@BlownhitherMa的重复我编辑了我的帖子。其实我以前也做过。但是它仍然不起作用。也许
sys.modules['FraudModel']=FraudModel
,因为这是缺少的属性?谢谢。它是有效的:D我能问两个问题吗:1)我们应该在解开后“卸载”吗。2) 如何在生成pickle文件的代码中解决这个问题?(即:硬编码模块)。谢谢,谢谢。它是有效的:D我能问两个问题吗:1)我们应该在解开后“卸载”吗。2) 如何在生成pickle文件的代码中解决这个问题?(即:硬编码模块)。谢谢