无法在Python中导入类

时间:2012-10-24 20:48:28

标签: python module

我有以下项目框架。

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因为我无法找到Room而对我大喊大叫,我在'game.py'中将其定义为 类。当我在命令行上运行nosetests时,我得到错误:导入错误(没有名为游戏的模块)。 什么似乎是错的?

1 个答案:

答案 0 :(得分:5)

我看到两个问题:

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

第一个是显而易见的。如果您希望使用ex47.game导入game.py,则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__.py内没有ex47)。