在virtualenv中使用tox运行测试时,我遇到了 py._path.local.LocalPath.ImportMismatchError: ('tfields.__main__', '/builds/dboe/tfields/.tox/py38/lib/python3.8/site-packages/tfields/__main__.py', local('/builds/dboe/tfields/tfields/__main__.py'))
。
我一直回到Getting error ImportMismatchError while running py.test,但是删除pycache和*.pyc并不能解决我的问题。有关我的ci的失败示例,请参见https://gitlab.mpcdf.mpg.de/dboe/tfields/-/jobs/1122409(您可以在第96行和第97行中看到,我删除了pycache和*.pyc,如上面提到的问题的答案中所建议的)。
欢迎任何提示或解决方案
在
testenv
部分中,必须设置或
您可以在pytest bugtracker上阅读有关该问题的更多信息,请参见此处https://github.com/pytest-dev/pytest/issues/2042
虽然我没有在这方面花费太多时间,但我很确定这与您的包的命名有关
主源文件夹名为
tfields
,您的包名为tfields
。问题是,现在安装的包和文件夹都可以在同一名称空间下用于Python如果我没记错的话,我的https://github.com/jugmac00/hibpcli项目也遇到了同样的问题——一旦我将源代码放在
src
目录中,并且不再调用与包名相同的顶级文件夹,问题就消失了如果您想深入挖掘,我强烈推荐Hynek Schlawack撰写的关于为什么使用
src
布局的文章:https://hynek.me/articles/testing-packaging/
你真的不需要在虚拟环境中运行tox
Tox
创建一个virtualenv来安装项目。自动化工具通常为新的python可执行文件提供标准化工具有时在重构项目之后;例如,更改项目文件夹结构会导致此问题。最好的补救办法通常是简单地打电话:
我总是在我的CI/CD中这样做。否则,可能会使用缓存,这会给这些构建的幂等性带来麻烦
如果这不起作用,请检查生成代理是否正确清理生成目录。它可能会从其他构建中留下残余
这将与删除^ {< CD2>}文件夹相同,您也可以考虑。
编辑: 我克隆了你的项目,恐怕它与
pytest
或tox
都没有关系。项目(导入)的结构相当不完整如果您应用了以下规则,您应该进行改进:
最后,在某个地方发生了一个导入循环(例如file1导入file2、file2导入file1)。但我会让你找到的
相关问题 更多 >
编程相关推荐