按照this SO answer中的说明,我创建了一个包含子包的Python包作为子文件夹,每个包含一个__init__.py
文件(全部都是空的)。
top_module
__init__.py
module_a.py
sub_module
__init__.py
module_c.py
我可以导入顶级模块,但尝试导入子模块会产生ImportError
:
>>> import top_module
>>> import top_module.sub_module
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named sub_module
在iPython中,我可以自动填充top_model.
向我显示module_a.py
,但不是sub_module
。
按照this SO answer中的说明操作,但我得到:
>>> top_module.__file__
'top_module.pyc'
这不是非常有用。有趣的是,__package__
给了我:
>>> print top_module.__package__
None
我可以这样做:
>>> import top_module
>>> import sub_module.module_c
那么为什么不import top_module.sub_module.module_c
?
答案 0 :(得分:3)
我已经解决了我的问题(这是一个非常愚蠢的错误,我害怕。)
我将PYTHONPATH设置为
/path/to/top_module
并且正在做
import module_a
当然有效。但是试着做
import top_module.submodule
没有工作,因为PYTHONPATH
没有&#34;知道&#34;关于top_module
,已经在 top_module
。
答案 1 :(得分:1)
尝试from sub_module.module_c import *