6

Nose を使用して単体テストを実行するとImportErrorが発生しますが、スタンドアロンで実行した場合は発生しません。ここで言及されているすべてのファイルはhttp://gist.github.com/395541#で見ることができます。

テスト スクリプトimportTest-Test.pyを直接実行すると、次の出力が得られます。

C:\usr\x\data\src\Python\mmm>python importTest-Test.py
In mmdb
In BusinessLogic
[]
.
----------------------------------------------------------------------
Ran 1 test in 0.001s

Nose に実行を許可すると、エラーが発生します。

C:\usr\x\data\src\Python\mmm>nosetests.exe
E
======================================================================
ERROR: Failure: ImportError (No module named mmdb.DataAccess.AttemptDB)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "c:\bin\installed\python2.6\lib\site-packages\nose-0.11.3-py2.6.egg\nose\loader.py", line 382, in loadTestsFromName
    addr.filename, addr.module)
  File "c:\bin\installed\python2.6\lib\site-packages\nose-0.11.3-py2.6.egg\nose\importer.py", line 39, in importFromPath
    return self.importFromDir(dir_path, fqname)
  File "c:\bin\installed\python2.6\lib\site-packages\nose-0.11.3-py2.6.egg\nose\importer.py", line 86, in importFromDir
    mod = load_module(part_fqname, fh, filename, desc)
  File "C:\usr\x\data\src\Python\mmm\importtest-Test.py", line 2, in <module>
    import importtest
  File "C:\usr\x\data\src\Python\mmm\importtest.py", line 1, in <module>
    from mmdb.BusinessLogic.AttemptManager import AttemptManager
  File "C:\usr\x\data\src\Python\mmm\mmdb\BusinessLogic\AttemptManager.py", line 1, in <module>
    from mmdb.DataAccess.AttemptDB import AttemptDB
ImportError: No module named mmdb.DataAccess.AttemptDB

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

FAILED (errors=1)

ノーズが問題を抱えているパッケージに含まれるファイルは、次の構造になっています。一部はhttp://gist.github.com/395541#で確認できます 。

mmm\importtest-Test.py
mmm\importtest.py
mmm\mmdb
mmm\__init__.py
mmm\mmdb\BusinessLogic
mmm\mmdb\BusinessObject
mmm\mmdb\DataAccess
mmm\mmdb\__init__.py
mmm\mmdb\BusinessLogic\AttemptManager.py
mmm\mmdb\BusinessLogic\Collections
mmm\mmdb\BusinessLogic\__init__.py
mmm\mmdb\BusinessLogic\Collections\__init__.py
mmm\mmdb\BusinessObject\__init__.py
mmm\mmdb\DataAccess\AttemptDB.py
mmm\mmdb\DataAccess\__init__.py

これは Win32 / Python 2.6 / Nose 0.11.3 で発生しています。

どんな助けにも感謝します。

ありがとう。

4

4 に答える 4

1

__init__.pyあなたはトップレベルのフォルダから削除しようとすることができますmmm (ここでの元の答え:https ://stackoverflow.com/a/3073368/19166 )

于 2011-12-20T07:51:34.760 に答える
1

デフォルトでは、nose は使用する PYTHONPATH を操作します。-P スイッチを使用して、この動作をオフにしてみてください。

于 2010-05-10T04:21:13.773 に答える