0

次のようなパッケージ構造がある場合:

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

4

0 に答える 0