通过按照此SO答案中的说明进行操作,我创建了一个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
。
遵循此SO答案中的说明,但我得到:
>>> 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
呢?
我已经解决了我的问题(我担心这是一个非常愚蠢的错误。)
我的PYTHONPATH设置为
/path/to/top_module
并且在做
import module_a
当然有效。但是尝试去做
import top_module.submodule
没用,是因为它PYTHONPATH
不知道top_module
,它已经存在了 top_module
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句