>>> import rmod2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named rmod2
使用 __ init __。py 文件,导入似乎有效,但包是空的:
>>> import rmod2
>>> dir()
['__builtins__', '__doc__', '__name__', '__package__', 'rmod2']
>>> dir(rmod2)
['__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__']
>>> rmod2.__path__
['/usr/lib/pymodules/python2.7/rmod2']
>>> rmod2.__file__
'/usr/lib/pymodules/python2.7/rmod2/__init__.py'
有人可以告诉我发生了什么,以及如何修复它以便在导入时实际加载模块内容?
答案 0 :(得分:1)
您希望将模块所在目录的路径添加到sys.path
variable,而不是或直接添加rmod.py
模块 到路径上的目录(而不是在子目录中)。
通过将__init__.py
添加到目录,您将其转换为python包,使其成为可导入的。如果这是你的意图,那么你移动了rmod
- rmod
- 包中的模块,你可以通过该命名空间导入它:
from rmod2 import rmod2
答案 1 :(得分:0)
一旦发生在我身上,包的模块无法从包中访问,但直接导入时,它可以正常工作。可能在包__all__
__init__.py
这不起作用:
import mypkg
obj = mypkg.mymodule.MyClass()
这有效:
import mypkg.mymodule
obj = mypkg.mymodule.MyClass()