1

次の構造のソリューションを開発しました。

my_package/
my_test_data/
test.py

my_package test.py( ) を簡単にインポートできますfrom my_package import my_class。これは、テスト ケースを作成して実行し、最終的にテスト対象のコードに必要な場所にブレークポイントを設定できる、選択した IDE で非常に便利です。

配布の準備が整った微細構造は、次のように変更されました。

my_package/
tests/
    my_test_data/
    test.py

インストールされたものが正常に動作することを誰かがテストしたい場合、これは問題ありません。Test は、インストールされている my_package のバージョンを参照します。問題は、開発中にmy_package開発フォルダーから参照する必要があることです。これにより、開発中のライブバージョンをテストし、最終的にデバッグ目的でそれにステップインできます。from .my_package import my_class相対インポートおよびその他の組み合わせで問題を解決しようとしましたfrom .. my_package import my_classが、次の例外が発生します。

ValueError: Attempted relative import in non-package

何か助けはありますか?

4

2 に答える 2

1

/dev開発体制は下、流通体制は下と仮定します/install

デフォルトでは、sys.pathの最初のエントリとしてスクリプト ディレクトリがあることに注意してください。したがって、test.pyステートメントがimport my_packageあり、 を実行すると、が空であっても、/dev/test.pyが見つかるはずです。が の最初のエントリである場合、実行すると が検索されます。my_package$PYTHONPATH/install$PYTHONPATH/install/tests/test.py/install/my_packageimport my_package

要約: in を使用import my_packagetest.pyたり、 に含めたり/installしようとしました$PYTHONPATHか?

于 2012-05-08T15:31:13.190 に答える
0

相対インポートは、パッケージ内でのみ許可されます。ディレクトリ参照とパッケージ処理を混同しないでください。

同様の質問に対する提案された解決策。

于 2012-05-08T10:56:41.470 に答える