0

a.py と b.py の 2 つのファイルがあります。それらは同じプロジェクトの異なるブランチです (別のブランチを git で別のディレクトリにチェックアウトします)。a.py と b.py の両方から関数をインポートして互いに比較する 3 番目のファイル c.py があります。

私の問題は、 a.py と b.py のインポートはほぼ同じですが、ブランチが異なるため、インポートする内容が異なることがよくあります。テストする関数を各ファイル (a.py および b.py) から c.py にインポートするとき、それらのパスを sys.path に追加する必要があります。これを行うと、b.py は a.py と同じモジュールをインポートします。それ自体をインポートしたり、その逆を行ったりするのではありません。

現時点では、新しいブランチを作成するたびに、インポートに追加の「ディレクトリ」を追加しているだけです。したがって、もともと b.py (非マスター ブランチ) に x、y、z をインポートしていた場合、これらのモジュールを含むディレクトリの前にパスを sys.path に追加し、インポートを branch_a.x として x、branch_a に変更します。 .y as y、branch_a.z as z... それほど時間はかかりませんが、自動化されたソリューションがあると便利です。何か案は?

編集:相対パスのコード:

import sys
sys.path.append("./..")
4

1 に答える 1

1

環境変数を設定しPYTHONPATHて、インポートされたモジュールの検索を開始する branch-root-dir を制御できます。

また、必要に応じて相対インポート (ここを参照) を使用することをお勧めします。正しく行うと、これにより、環境/パス設定への依存が大幅に削減されます。ただし、すべてのインポートが相対になるわけではないため、env/path 設定を使用する必要があります (たとえば、アップレベルのインポートが多すぎるのを避けるため、およびスクリプト内のインポートを相対にすることはできないため)。

于 2013-10-23T19:08:45.710 に答える