因此,我的结构是:
companynamespace/
__init__.py
projectpackage/
__init__.py
somemodule.py
companynamespace/__init__.py
为空projectpackage/__init__.py
具有以下行:import companynamespace.projectpackage.somemodule as module_shortname
当我打开python控制台并键入
import companynamespace.projectpackage
(为此正确设置了PYTHONPATH)时,我在AttributeError: 'module' object has no attribute 'projectpackage'
行上看到了import companynamespace.projectpackage.somemodule as module_shortname
。如果我删除了as module_shortname
部分(并在文件的其余部分中进行了所有必要的替换),则所有内容都会正确导入。谁能告诉我为什么呢?我的Google-Fu使我失败。
最佳答案
不需要在projectpackage/__init__.py
中进行绝对导入,请执行相对操作
import somemodule as module_shortname
您执行此操作的方式(使用绝对导入)将导致循环导入,这在Python中效果不佳。导入模块时,您还要调用父模块的
__init__.py
。在您的情况下,通过绝对导入,您还需要在projectpackage/__init__.py
中调用projectpackage/__init__.py
。关于python - 软件包在Python中的导入问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5796625/