我在使用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 语句导入的对象进行酸洗,则不会发生这种情况。我怎样才能绕过这个?
使其工作的最简单方法是按以下方式手动将模块添加到 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)