如果你有这样的包结构:
foldertest/
__init__.py
a/
__init__.py
asub/
__init__.py
b/
__init__.py
foldertest.__ini__.py
:
import a
foldertest.a.__init__.py
:
import foldertest.a.asub
print foldertest.a.asub
如果我从foldertest/
上面的文件夹运行python shell并发出import foldertest
,我收到以下错误:
>>> import foldertest
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "foldertest/__init__.py", line 1, in <module>
import foldertest.a
File "foldertest/a/__init__.py", line 4, in <module>
print foldertest.a.asub
AttributeError: 'module' object has no attribute 'a'
然而,如果我将foldertest.a.__init__.py
更改为导入foldertest.b
而尝试打印我会收到的内容:
>>> import foldertest
<module 'foldertest.b' from 'foldertest/b/__init__.pyc'>
>>>
我做错了什么或者不能在包树中使用绝对引用到包/模块自己的分支? (另外PyDev似乎不赞成编写这样的导入)我希望有绝对的包引用以保持一致性。另外,我不知道编写导入语句或构建针对此建议的包的任何“最佳实践”。