私はPythonを始めたばかりで、パッケージ内モジュールのロードの検索パスを理解するのに問題があります。私はこのような構造を持っています:
top/ Top-level package
__init__.py Initialize the top package
src/ Subpackage for source files
__init__.py
pkg1/ Source subpackage 1
__init__.py
mod1_1.py
mod1_2.py
...
pkg2/ Source subpackage 2
__init__.py
mod2_1.py
mod2_2.py
...
...
test/ Subpackage for unit testing
__init__.py
pkg1Test/ Tests for subpackage1
__init__.py
testSuite1_1.py
testSuite1_2.py
...
pkg2Test/ Tests for subpackage2
__init__.py
testSuite2_1.py
testSuite2_2.py
...
...
testSuite1_1で、モジュールmod1_1.py(など)をインポートする必要があります。どのインポートステートメントを使用する必要がありますか?Pythonの公式チュートリアル(docs.python.org、秒6.4.2)には、次のように書かれています。
「インポートされたモジュールが現在のパッケージ(現在のモジュールがサブモジュールであるパッケージ)に見つからない場合、importステートメントは指定された名前の最上位モジュールを探します。」
私はこれを(testSuite1_1.py内から)使用できることを意味すると解釈しました:
src.pkg1からimportmod1_1
また
src.pkg1.mod1_1をインポートします
どちらも機能しません。私はここで同様の質問に対するいくつかの答えを読みましたが、解決策を見つけることができませんでした。
編集:Pythonの命名規則に従うようにモジュール名を変更しました。しかし、私はまだこの単純な例を機能させることができません。