【发布时间】:2020-10-06 09:16:22
【问题描述】:
在我的项目中,我使用 tox 和鼻子测试。使用 PyCharm,我的 tox 管道完全通过了,包括所有测试。当我使用 python3 在 Ubuntu18.04 容器上执行 tox 时,它给了我以下错误:
ImportError: 没有名为“my_project”的模块
最后导致如下错误:
错误:命令 /.tox/py36/bin/nosetests 的 InvocationError(使用代码 1 退出)
my_project 是我正在测试的模块的名称,在/ 下的目录结构如下所示,我正在执行tox 的根目录:
- 我的项目/
- 测试/
- tox.ini
- setup.cfg
- 其他文件
我的 tox.ini 如下所示:
[tox]
envlist = py36
[testenv]
commands = python3 setup.py build
nosetests
deps = -r{toxinidir}/test-requirements.txt
我试图以不同的方式为鼻子测试命令提供项目路径,但这些都不起作用。我感兴趣的一行是tox 的初始输出:
py36安装:my_project@file:///.tox/.tmp/package/1/my_project-0.4.post52.dev256143400.zip,
这让我想到这是否是nosetests 找不到my_project 的原因。 有关详细信息,错误的堆栈跟踪如下:
错误:失败:ImportError(没有名为“my_project”的模块)
回溯(最近一次通话最后一次):
文件“/.tox/py36/lib/python3.6/site-packages/nose/failure.py”,第 39 行,在 runTest 提高 self.exc_val.with_traceback(self.tb)
loadTestsFromName 中的文件“/.tox/py36/lib/python3.6/site-packages/nose/loader.py”,第 418 行 addr.filename, addr.module)
importFromPath 中的文件“/.tox/py36/lib/python3.6/site-packages/nose/importer.py”,第 47 行 return self.importFromDir(dir_path, fqname)
importFromDir 中的文件“/.tox/py36/lib/python3.6/site-packages/nose/importer.py”,第 79 行 fh, 文件名, desc = find_module(part, path)
文件“/usr/lib/python3.6/imp.py”,第 297 行,在 find_module 中 raise ImportError(_ERR_MSG.format(name), name=name) ImportError: No module named 'my_project'
【问题讨论】:
-
my_project目录下是否有__init__.py文件? -
是的,
my_project/中有一个__init__.py。 -
经过多次尝试,问题仍未解决。我想知道我做错了什么。
标签: python-3.6 importerror nose tox