如果包结构如下:
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似乎也不赞成这样写导入)为了保持一致性,我希望有绝对的包引用。此外,我不知道任何“最佳实践”的书面进口声明或结构包,建议反对这一点。你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐