我最近删除了一个模块
xyz
并将其替换为另一个不同名称的模块 abc
。在某些 pickle 文件中,它仍然导入 xyz
模块。我想更改它以导入 abc
模块。我该怎么做?
我在序列化/反序列化方面没有太多经验。我的理解是我必须读取 pickle 文件(即反序列化)并以某种方式进行更改,然后在更改后再次序列化它。
您可以通过手动更新
abc
“综合”导入 xyz
为
sys.modules
,而不是修改 pickle 文件:
import sys
import abc
sys.modules["xyz"] = abc
任何导入
xyz
的尝试都将使用已加载的 xyz
模块,它只是 abc
的别名。
import xyz
>>> print(xyz)
<module 'abc' ...>
将相关模块插入
sys.modules
后,您将能够加载旧的pickle文件,而无需对文件本身进行任何修改。