0

次のプロジェクトスケルトンがあります。

ex47 
    bin/
    docs/
    ex47/
        __init__.py
    tests/
        __init__.py
        game_tests.py
    game.py
    setup.py

Aptana Studio での作業。game_tests.py には

from nose.tools import *
from ex47.game import Room

しかし、Aptana は、「game.py」でクラスとして定義した Room を見つけることができないと私に怒鳴っています。コマンドラインで実行するnosetestsと、エラーが発生しました:インポートエラー(ゲームという名前のモジュールはありません)。何が間違っているようですか?

4

1 に答える 1

5

2 つの問題があります。

  • 最上位の ex47 は有効なパッケージではありません (存在しません__init__.py)
  • 最上位の ex47 はあなたにありませんPYTHONPATH

最初のものは明らかです。ex47.gameを使用して game.py をインポート可能にするex47場合は、有効なパッケージである必要があります。ex47おそらく、有効なパッケージであるインナーに入れたかったのでしょうか?

ex472番目の問題になると、pythonはあなたPYTHONPATHと現在のディレクトリ(コマンドを発行したときにいるディレクトリ)を探します。おそらくそれらのどれもex47当てはまらないため、見つけることができません。

上記を考慮して、次のディレクトリ構造があるとします。

ex47 
    bin/
    docs/
    ex47/
        __init__.py
        game.py
    tests/
        __init__.py
        game_tests.py
    setup.py

そして、次のようなテストを実行しようとしました:

nosetests tests

最上位のディレクトリにいる間は機能するはずです( topmost の中ex47にはないことに注意してください)。__init__.pyex47

于 2012-10-24T20:57:06.923 に答える