如何更改 pickle 文件中的导入语句?

问题描述 投票:0回答:1

我最近删除了一个模块

xyz
并将其替换为另一个不同名称的模块
abc
。在某些 pickle 文件中,它仍然导入
xyz
模块。我想更改它以导入
abc
模块。我该怎么做?

我在序列化/反序列化方面没有太多经验。我的理解是我必须读取 pickle 文件(即反序列化)并以某种方式进行更改,然后在更改后再次序列化它。

python serialization pickle
1个回答
0
投票

您可以通过手动更新

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文件,而无需对文件本身进行任何修改。

© www.soinside.com 2019 - 2024. All rights reserved.