0

我有以下项目框架。

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

在 Aptana 工作室工作。在 game_tests.py 我有

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

但是 Aptana 对我大喊大叫,因为我找不到 Room,我在 'game.py' 中将它定义为一个类。当我nosetests在命令行上运行时出现错误:导入错误(没有名为游戏的模块)。似乎有什么问题?

4

1 回答 1

5

我看到两个问题:

  • 最上面的 ex47 不是一个有效的包(没有__init__.py
  • 最上面的 ex47 不在你的PYTHONPATH

第一个很明显。如果您希望 game.py 可以使用ex47.gamethen导入,则ex47必须是有效的包。所以很可能你想把它放在ex47一个有效的包里面?

当涉及到第二个问题时,python 将ex47在您PYTHONPATH的当前目录(您发出命令时所在的目录)中查找。可能这些都不是,因此ex47无法找到。

考虑到上述情况,如果您具有以下目录结构:

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

并尝试运行这样的测试:

nosetests tests

在最顶层的目录中它应该可以工作(请注意,最顶层的目录中ex47没有)。__init__.pyex47

于 2012-10-24T20:57:06.923 回答