无法在Python中导入类

Dom*_*bey 0 python module

我有以下项目骨架.

ex47 
    bin/
    docs/
    ex47/
        __init__.py
    tests/
        __init__.py
        game_tests.py
    game.py
    setup.py
Run Code Online (Sandbox Code Playgroud)

在Aptana Studio工作.在game_tests.py我有

from nose.tools import *
from ex47.game import Room
Run Code Online (Sandbox Code Playgroud)

但Aptana因为无法找到Room而对我大吼大叫,我在'game.py'中定义了Room.当我nosetests在命令行上运行时,我得到错误:导入错误(没有名为游戏的模块).什么似乎是错的?

kgr*_*kgr 5

我看到两个问题:

  • 最顶层的ex47不是有效的包(没有__init__.py)
  • 最顶层的ex47不在您的身上 PYTHONPATH

第一个是显而易见的.如果你想让game.py可以导入,ex47.game那么ex47必须是一个有效的包.所以很可能你想把它放在内部ex47,这是一个有效的包?

当谈到第二个问题时,python将ex47在你PYTHONPATH和当前目录中查找(发出命令时你所在的目录).可能没有一个是这种情况,因此ex47无法找到.

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

ex47 
    bin/
    docs/
    ex47/
        __init__.py
        game.py
    tests/
        __init__.py
        game_tests.py
    setup.py
Run Code Online (Sandbox Code Playgroud)

并试图运行这样的测试:

nosetests tests
Run Code Online (Sandbox Code Playgroud)

在最顶层的ex47目录中它应该工作(注意__init__.py在最顶层内没有ex47).