次のようなパッケージ構造がある場合:
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シェルを実行して発行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はこのようなインポートの記述を承認していないようです)一貫性を保つために絶対的なパッケージ参照が必要でした。また、これに反対するインポートステートメントや構造化パッケージを作成するための「ベストプラクティス」も知りません。