如果你有这样的包结构:
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 似乎也不赞成写这样的导入)我想有绝对的包引用以保持一致性。此外,我不知道有任何“最佳实践”来编写导入语句或构建建议的包。