4

現在、次のファイル階層があります。

\package
    __init__.py
    run_everything.py

    \subpackage
        __init__.py
        work.py
        work1.py
        work2.py

    \test
        __init__.py
        test_work.py
        test_work1.py

私の最初の質問は、相対輸入に関するものです。\subpackage\work.py に custom_function() という関数があり、test_work.py でその関数をテストしたいとします。何らかの理由で、あるモジュールから別のモジュールにこのインポートを行う方法がわかりません。試しfrom .. subpackage.work1 import custom_function()てもうまくいかないようで、エラーが発生Attempted relative import in non-packageします これを解決する方法はありますか?

2) run_everything.py のすべてのテスト ファイルを 1 つの関数で実行したいのですが、各 test_work*.py ファイルに suite() 関数を追加します。これにより、各 unit_testing クラスが suite.addTest(unittest.makeSuite(TestClass)) に追加されます。 、そして最後にそれらを最上位の run_everything.py にインポートすることは、Python2.7 で最も一般的な方法でしょうか?

4

1 に答える 1

1

これがハックです*
「サブパッケージ」へのパスと「テスト」へのパスを、次を使用してrun_everythingのpythonパスに挿入します。

    システムをインポート
    sys.path.insert(0, '/パス/to/パッケージ/サブパッケージ')
    sys.path.insert(0, '/パス/to/パッケージ/テスト')

そして、run_everything でバニラのインポートを使用してすべてのファイルをインポートできます。

    作業、作業 1、作業 2 のインポート
    import test_work, test_work1

*これは PYTHONPATH に永続的に影響するわけではありません。*ハードコーディングについて私に反対票を投じることを忘れないでください:(

于 2012-08-24T19:52:12.367 に答える