1. ホーム
  2. python

[解決済み] Python Nose インポートエラー

2022-08-05 19:08:01

質問

私は 鼻のテストフレームワーク が、ファイル構造の中で私のテストスクリプトの下にあるモジュールを認識することができません。 この問題を実証する最も簡単な例を設定しました。以下、それを説明します。

パッケージのファイル構成はこうなっています。

./__init__.py
./foo.py
./tests
   ./__init__.py
   ./test_foo.py

foo.pyには含まれています。

def dumb_true():
    return True

tests/test_foo.py に含まれています。

import foo

def test_foo():
    assert foo.dumb_true()

どちらも 開始 .py ファイルは空です。

もし私が nosetests -vv をメインディレクトリ(foo.pyがある場所)で実行すると、次のようになります。

Failure: ImportError (No module named foo) ... ERROR

======================================================================
ERROR: Failure: ImportError (No module named foo)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/usr/lib/python/site-packages/nose-0.11.1-py2.6.egg/nose/loader.py", line 379, in loadTestsFromName
    addr.filename, addr.module)
  File "/usr/lib/python/site-packages/nose-0.11.1-py2.6.egg/nose/importer.py", line 39, in importFromPath
    return self.importFromDir(dir_path, fqname)
  File "/usr/lib/python/site-packages/nose-0.11.1-py2.6.egg/nose/importer.py", line 86, in importFromDir
    mod = load_module(part_fqname, fh, filename, desc)
  File "/home/user/nose_testing/tests/test_foo.py", line 1, in <module>
    import foo
ImportError: No module named foo

----------------------------------------------------------------------
Ran 1 test in 0.002s

FAILED (errors=1)

tests/ディレクトリの中から実行しても、同じエラーが発生します。 ドキュメントによると、そして の例では 私が見つけた、noseはそれが呼び出されたディレクトリと同様にパスにすべての親パッケージを追加することになっていますが、私の場合、これは起こっていないようです。

私は Ubuntu 8.04 を Python 2.6.2 と共に動かしています。 もしそれが重要なら、私は(setup_toolsではなく)手動でnoseをビルドしてインストールしました。

どのように解決するのですか?

あなたが持っている __init__.py をトップレベルディレクトリに追加してください。これがパッケージになっています。もしこれを削除すると、あなたの nosetests は動作するはずです。

もし削除しないのであれば、あなたの importimport dir.foo で、ここで dir はディレクトリの名前です。