gpt4 book ai didi

python - pickle 使用 importlib.util 导入的对象

转载 作者:太空宇宙 更新时间:2023-11-03 15:55:08 24 4
gpt4 key购买 nike

我在使用 Python 的 pickle 时遇到了问题。我需要通过将文件路径提供给 importlib.util 来加载一些 Python 模块,如下所示:

import importlib.util
spec = importlib.util.spec_from_file_location('custom', 'C:\path\to\.py\file.py')
module = importlib.util.module_from_spec(spec)
spec.loader.exec_module(module)

我想从加载的模块中实例化一些对象并将它们序列化以备后用,但是当我尝试时:

pickle.dump(module.ObjectFromModule(), open('C:\object\location\obj.p', 'wb'))

我明白了:_pickle.PicklingError:无法 pickle :模块“自定义”的导入失败

如果我尝试对通过 import 语句导入的对象进行 pickle ,则不会发生这种情况。我怎样才能绕过这个?

最佳答案

使其工作的最简单方法是通过以下方式手动将模块添加到 sys.module:

import importlib.util
import sys

spec = importlib.util.spec_from_file_location('custom', 'C:\path\to\.py\file.py')
module = importlib.util.module_from_spec(spec)
spec.loader.exec_module(module)
sys.modules['custom'] = module

关于python - pickle 使用 importlib.util 导入的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43819653/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com