1

Python 2.7.5 のドキュメントを確認しました。実際のプロジェクトで問題が発生していますが、問題を簡潔に再現するためにここに小さなテスト プロジェクトを作成しました。~/Development/Test に次のレイアウトが保存されているパッケージを想像してください。

構造は次のとおりです。

Test/
    __init__.py
    foo.py
    sub/
        __init__.py
        test_foo.py

そしてコード(__init__.pyファイルは空です):

foo.py

def bar():
    print("hello world")

test_foo.py

import Test.foo
# also tried from Test import foo

def main():
    foo.bar()

if __name__ == "__main__":
    main()

端末から実行しようとするとtest_foo.py(つまりpython test_foo.py)、次のようになります:

Traceback (most recent call last):
  File "test_foo.py", line 1, in <module>
    import Test.foo
ImportError: No module named Test.foo

サブモジュールのテストファイルからパッケージ(foo.py)のメインファイルをインポートしようとしています(私の実際のプロジェクトでは、サブモジュールは単体テストコードです)。奇妙なことに、 Sublime text 2エディターとプラグインpython test runnerを使用すると、個々のテストを問題なく実行できますが、テスト ファイルをビルドできません。上記のエラーが表示されます。

4

2 に答える 2

1

モジュール名は大文字と小文字が区別されます。使用する:

import Test.foo as foo

as fooは を呼び出すためのものですfoo.barmain


~/DevelopmentPYTHONPATH にもリストされている必要があります。

Unix を使用していて、ログイン シェルが bash の場合、~/.profile を編集に追加~/Developmentして含めるPYTHONPATH

export PYTHONPATH=$PYTHONPATH:$HOME/Development

Windows の手順は次のとおりです。


デバッグに関するその他の提案:

場所

import sys
print(sys.path)
import Test
print(Test)
import Test.foo

の上部にありtest_foo.pyます。出力を投稿してください。

于 2013-08-18T17:07:51.847 に答える