pickle无法导入存在的模块?

发布于 2021-01-29 14:10:51

为什么会发生这种情况?

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 windowcPickle它可以很好地加载模块,但是加载时似乎不起作用。

有关一些可能相关的其他信息:

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

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

我试图从中加载的模块在in中project2\project2sub\MODULE\data.py,而不会弄乱sys路径。

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

可能sys.path以某种方式将附加内容弄乱吗?

关注者
0
被浏览
180
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    泡菜取决于模块路径。不管您如何加载模块,如果您不介意的话sys.path,泡菜的加载和保存都应该起作用。但是,如果import module.foo在一个位置执行,则sys.path.append('module'); import foo有两个不同的模块路径:在第一个实例中,模块路径为,module.foo而在第二个实例中,路径为just
    foo。这些不相等,这将阻止泡菜正常工作。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看