私は次のものを持っています:
ModuleFolder
|
|-->. ModuleFile.py .
|
'-->. TestsFolder .
|
'---> UnitTest1.py
親ディレクトリからインポートしようとしています。この場合、テスト フォルダーから「UnitTest1.py」を実行し、そのすぐ上のディレクトリ (ファイル「ModuleFile.py」) からインポートしようとしています。
- これにはすでにたくさんの答えがあることを私は知っています。 SO Question1、SO Question2、その他すべての SO Question。明示的なパスではなく、相対インポートとして「using ../」を見つけることができませんでした。
- Python 2.5の時点で、の使用について言及しているドキュメントに従って「相対インポート」がサポートされていることは知っていますが、ユニットテストでより明確になり、名前のマングリング/衝突を回避できるように
from .. import *
、具体的に実行しようとしています。import MyModuleName
私がやっていること(そしてそれは私のために働いています)は次のとおりです:
sys.path.append("../")
そして、親ディレクトリから必要なものをインポートします。
- はい、親ディレクトリに __init__.py があり、
- いいえ、私の親パスは Python パスまたは環境変数の一部ではありません
- 親パスを に追加しないのはなぜ
sys.path
ですか? 相対的だから。/home/workspace/MyModule/unittests/ から実行していて、モジュールが /home/workspace/MyModule/ の下にある場合、/home/workspace/MyModule/ をパスに追加しても、同僚がこれを実行した場合、必ずしも true になるとは限りません。彼のマシンの /home/documents/MyModule という自分のディレクトリの下にあります。
私の質問:
これはPythonに適していますか?そうでない場合、これの何が問題なのですか。より良い方法はありますか?それとも、これは本当に、私がすでに見た 7 つ以上の SO の質問の 1 つに答えがある RTFM の瞬間ですか? (私が取った相対パスアプローチではなく、明示的なパスを推奨しているすべての人を見ました)。
その他の有用な情報:
- パイソン 2.6
- Linux で作業していますが、Win にも簡単に移行できます。