Cla*_*diu 4 python import module pickle
为什么会发生这种情况?
import window; print "LOADED"; data = cPickle.loads(data)
Run Code Online (Sandbox Code Playgroud)
结果是:
LOADED
Traceback (most recent call last):
...
import window; print "LOADED"; data = cPickle.loads(data)
exceptions.ImportError: No module named window
Run Code Online (Sandbox Code Playgroud)
如果可以的话import window,cPickle它可以很好地加载模块,但是在加载时似乎不起作用。
有关一些可能相关的其他信息:
我保存文件的模块在中project1\MODULE\submodule\main.py。该window模块project1\MODULE\window.py。main.py开始:
import sys
sys.path.append("..\\..")
sys.path.append("..")
...
import window
Run Code Online (Sandbox Code Playgroud)
我尝试从中加载的模块位于in project2\project2sub\MODULE\data.py,没有弄乱sys路径。
MODULE在两种情况下都是相同的:我要加载的模块是project2\project2sub\MODULE\window.py。
可能sys.path以某种方式将附加内容弄乱吗?
检查并确保要以与保存程序中相同的方式在加载程序中导入类。
保存:
import window
myObj.window_obj = window.wObj
Run Code Online (Sandbox Code Playgroud)
载入中
import window
myObj = cPickle.loads(data)
Run Code Online (Sandbox Code Playgroud)
不:
保存:
from window import wObj
myObj.window_obj = wObj
Run Code Online (Sandbox Code Playgroud)
正在加载:
import window
myObj = cPickle.loads(data)
Run Code Online (Sandbox Code Playgroud)
泡菜取决于模块路径。无论您如何加载模块,如果您不介意的话sys.path,泡菜的加载和保存都应该起作用。但是,如果import module.foo在一个位置执行,则sys.path.append('module'); import foo有两个不同的模块路径:在第一个实例中,模块路径为,module.foo而在第二个实例中,路径为just foo。这些不相等,这将阻止泡菜正常工作。
| 归档时间: |
|
| 查看次数: |
7522 次 |
| 最近记录: |