在我的项目中,我用的是鼻测试。使用PyCharm,我的毒理管道完全通过了,包括所有的测试。当我使用python3在Ubuntu18.04容器上执行tox时,它会给出以下错误:
ImportError:没有名为“my_project”的模块
最后导致以下错误:
错误:命令/..tox/py36/bin/nosetest的InvocationError (与代码1一起退出)
my_project是我正在测试的模块的名称,目录结构在/ (执行tox的根dir )下面是这样的。
我的tox.ini看起来如下:
[tox]
envlist = py36
[testenv]
commands = python3 setup.py build
nosetests
deps = -r{toxinidir}/test-requirements.txt我尝试以不同的方式提供到项目的路径,以进行nosetest命令,但这些都不起作用。我感兴趣的一行是tox的初始输出
安装了
py36 : my_project @py36
这让我想到,如果这就是nosetest找不到my_project的原因。有关详细信息,错误的堆栈跟踪如下:
错误:失败: ImportError (没有名为“my_project”的模块)
回溯(最近一次调用):
文件"/.tox/py36/lib/python3.6/site-packages/nose/failure.py",第39行,在runTest raise self.exc_val.with_traceback(self.tb)中
文件"/.tox/py36/lib/python3.6/site-packages/nose/loader.py",行418,在loadTestsFromName addr.filename,addr.module中)
文件"/.tox/py36/lib/python3.6/site-packages/nose/importer.py",第47行,在importFromPath返回self.importFromDir(dir_path,fqname)中
文件"/.tox/py36/lib/python3.6/site-packages/nose/importer.py",第79行,在importFromDir fh中,文件名,desc =find_module(部件,路径)
文件"/usr/lib/python3.6/imp.py",第297行,在find_module name(_ERR_MSG.format(Name),name=name) ImportError中:没有名为'my_project'的模块
发布于 2020-07-21 20:42:20
我看到了三个可能的罪犯。
(1) python3 setup.py build不应存在于commands区段。
# the build command is redundant, there is a special option for this.
commands = python3 setup.py build
nosetests
# The install command with it's default
install_command=python -m pip install {opts} {packages}(ARGV)
deps = -r{toxinidir}/test-requirements.txt(2)使用Pycharm,您可以将项目添加为sources root (右击文件夹>标记目录为>源根)。或者以其他方式配置它(可能是路径变量?)这使得my_project可以在上下文中用于在Pycharm中运行它?但是,这不应该发生在毒物测试中,除非你有白名单外部或站点文件被转换为True。
因此,当安装在容器上时,此链接不存在。
(3)我不禁注意到setup.py或pyproject.toml的脓肿。用于安装my_project的文件。例如,在本地运行此命令,如果安装不能工作,则调试该命令:
pip install .https://stackoverflow.com/questions/62413995
复制相似问题