私はちょうどPythonから始まり、パッケージ内モジュールロードの検索パスを理解するのに困っています。インパッケージモジュールが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
...
...
私はモジュールmod1_1.py(など)をインポートする必要があります。どのようなインポートステートメントを使用する必要がありますか? Pythonの公式チュートリアル(docs.python.org、sec 6.4.2):
"インポートされたモジュールが現在のパッケージ(現在のモジュールがサブモジュールであるパッケージ)に見つからない場合、インポートステートメントは、指定された名前を持つトップレベルのモジュールを探します。
は私が(testSuite1_1.py内から)を使用することができることを意味するため、これを取った:src.pkg1インポートmod1_1からまたは
輸入src.pkg1.mod1_1
いずれも動作しません。私はここで同様の質問に対するいくつかの答えを読んだが、解決策を見つけることができなかった。
編集:Pythonの命名規則に従ってモジュール名を変更しました。しかし、私はまだこの単純な例を得ることはできません。
これは、ダッシュの構文エラーです。 –