パッケージを作成しました。使いやすさのために、packageAと呼びます。
このパッケージには、(個別のファイル)に4つのサブモジュールとinitファイルがあるため、パッケージには次のファイルが含まれています。
__init__.py
- moduleA.py
- moduleB.py
- moduleC.py
- moduleD.py
モジュールBDはスタンドアロンであり、他のローカルモジュールをインポートしません。モジュールAはモジュールBDをインポートします。
これで、インポートしたいスクリプトができましたpackageA
。これまでのところ、init.pyは空です。
import packageA
問題なく動作します。ただし、moduleAはこのインポートからは利用できません。packageA.moduleAを介して使用する場合は、次のエラーが発生します。
AttributeError: 'module' object has no attribute
以下も問題なく動作します。
from packageA import moduleB
from packageA import moduleC
from packageA import moduleD
そして次のインポートはImportErrorを引き起こします:
from packageA import moduleA
このエラーが発生します:
Traceback (most recent call last):
File "run.py", line 19, in <module>
from packageA import moduleA
ImportError: cannot import name moduleA
moduleAで間違ったことをしているのではないかと思いましたが、moduleAが空であっても、インポートによって同じエラーが発生します。このモジュールはどういうわけかインポートできないようです。これはどのように可能ですか?
私はすべてのPythonモジュール用に個別の単体テストファイルを持っていますが、はい、moduleAはエラーなしで正しく動作しています。