运行鼻子测试时出现导入错误

kor*_*bay 5 python nose nosetests python-3.x

my_project
    -my_project
        - __init__.py
        - main.py
        - constants.py
        -test
            - __init__.py
            - test_main.py
Run Code Online (Sandbox Code Playgroud)

test_main.py from my_project import main

主文件 import constants

当我在 my_project 中运行鼻子测试时,我最终得到 ImportError: No module named 'constants'

这两个__init__.py文件都是空白的。

如果我更改import constantsfrom my_project import constantsin main.py,那么鼻子测试会起作用。但是,现在如果我只是运行,python main.py我会得到ImportError: No module named 'my_project'.

有人可以帮我指出我做错了什么吗?我已经搜索了很多帖子,但我无法自己修复它。谢谢。

wim*_*wim 3

在 main.py -> 中import constants是隐式相对导入(不好)。应该改成更常用的from my_project import constants

你提到这使得鼻子测试起作用。注意:您不需要__init__.py在测试子目录中,事实上,通常不鼓励这样做。

现在要修复python main.py导入错误,如果您没有将其包含在sys.path. 有多种方法可以解决这个问题 -

  • 从项目根目录执行(即最上面的my_project)
  • 设置 PYTHONPATH 环境变量
  • 使用 setuptools / easy_install 等正确打包并安装您的应用程序