因此,我的结构是:
companynamespace/
__init__.py
projectpackage/
__init__.py
somemodule.py
companynamespace/__init__.py
为空
projectpackage/__init__.py
有一行:
当我打开一个python控制台并输入import companynamespace.projectpackage
(PYTHONPATH为此设置正确)时,我在import companynamespace.projectpackage.somemodule as module_shortname
行得到AttributeError: 'module' object has no attribute 'projectpackage'
。如果我删除as module_shortname
部分(并在文件的其余部分进行所有必要的替换),则所有内容都将正确导入。在
谁能告诉我这是为什么吗?我的googlefu让我失望了。在
在
projectpackage/__init__.py
中不需要绝对导入,请执行相对导入这样做(使用绝对导入)会导致循环导入,这在Python中不太好用。导入模块时,还调用父模块的
__init__.py
。在您的例子中,对于绝对导入,您也在projectpackage/__init__.py
中调用projectpackage/__init__.py
。在好吧,根据PEP 221你的代码似乎是合法的。可能是个虫子。下面的解决方法(相当于该表达式)适用于我(Python2.6.6):
希望有帮助。在
相关问题 更多 >
编程相关推荐