【发布时间】:2014-08-08 07:55:11
【问题描述】:
我尝试导入我搁置的自定义类实例,但我得到:
Import Error: No module named MyModule
我所有的 python 模块都位于包含__init__.py的目录中
这是我执行搁置的 puttoshelve.py 模板:
from MyModule import MyModule
import shelve
import copy
mymodule = MyModule()
cmymodule = copy.deepcopy(mymodule)
pathtomyshelve ="/some/path/shelve"
cshelve = shelve.open(pathtomyshelve)
cshelve['object'] = cmymodule
cshelve.close()
这实际上执行了一个搁置。如果我在同一个导入搁置中运行 ipython 会话并且:
from MyModule import MyModule
import shelve
pathtomyshelve ="/some/path/shelve"
shelve_p = shelve.open(pathtomyshelve)
obj = shelve_p['object']
obj
然后我得到:
{'object': <MyModule.MyModule object at 0x2139510>}
但是
当我使用 outofshelve.py 检索我的对象时,这与我从 ipython 控制台运行的代码基本相同,我收到:
Import Error: No module named MyModule
我在这里缺少什么? (以下完全错误)
File "/home/pierre/.qgis2/python/plugins/sig40/sig40_ZR_dialog.py", line 100, in __init__
self.mymodule = shelve_p['object']
File "/usr/lib/python2.7/shelve.py", line 122, in __getitem__
value = Unpickler(f).load()
File "/usr/lib/python2.7/dist-packages/qgis/utils.py", line 454, in _import
mod = _builtin_import(name, globals, locals, fromlist, level)
ImportError: No module named MyModule
【问题讨论】:
-
只是为了结束这个问题:MyModule 引用了一些阻止执行架子的 Qt 对象。我不知道是否有办法解决这个问题,因为我放弃了我的初始对象,而是选择了一个更简单的对象,只包含内置的 python 对象。关闭。
标签: python-2.7 shelve