gpt4 book ai didi

python - pickle 无法导入已存在的模块?

转载 作者:太空狗 更新时间:2023-10-30 02:00:14 25 4
gpt4 key购买 nike

为什么会发生这种情况?

import window; print "LOADED"; data = cPickle.loads(data)

结果是:

LOADED
Traceback (most recent call last):
...
import window; print "LOADED"; data = cPickle.loads(data)
exceptions.ImportError: No module named window

如果我执行 import window,它可以很好地加载模块,但是当使用 cPickle 加载时,它似乎不起作用。

一些可能相关的附加信息:

我保存文件的模块在project1\MODULE\submodule\main.pywindow 模块是 project1\MODULE\window.pymain.py 开始:

import sys
sys.path.append("..\\..")
sys.path.append("..")
...
import window

我试图从中加载的模块位于 project2\project2sub\MODULE\data.py 中,没有弄乱 sys 路径。

MODULE 在这两种情况下是相同的:我要加载的模块是 project2\project2sub\MODULE\window.py

sys.path 附加是否会以某种方式搞乱它?

最佳答案

Pickle 取决于模块路径。无论您如何加载模块,如果您不弄乱 sys.path,pickle 加载和保存应该会起作用。但是,如果您在一个地方执行 import module.foo,并且 sys.path.append('module'); import foo,你有两个不同的模块路径:在第一个实例中,模块路径是 module.foo,而在第二个实例中,它只是 foo。这些并不等同,这会阻止 pickle 正常工作。

关于python - pickle 无法导入已存在的模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6050391/

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