模块无法在包树中对其自己的分支进行绝对导入?

时间:2013-01-21 08:39:56

标签: python import coding-style

如果你有这样的包结构:

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

0 个答案:

没有答案