容器中运行pytest报错:ImportError: cannot import name ‘resultlog_key‘ from ‘_pytest.resultlog‘

pytest在容器里运行时候一直报错_pytest.resultlog
网上几乎所有文章都说是pytest-rerunfailures和pytest版本的问题(其实是ModuleNotFoundError: No module named ‘_pytest.resultlog’ ),但是显然和本文的报错不是同一个,如下
在这里插入图片描述
我重装了很多个版本的pytest和pytest-rerunfailures都不行
但是考证了一下,6.1.0版本中确实删除了_pytest.resultlog
在这里插入图片描述
https://githubmemory.com/repo/pytest-dev/pytest-rerunfailures/issues/128

大概率问题原因也相似
于是尝试手动卸载pytest,发现卸载后site-packages/_pytest/resultlog.py仍然存在

尝试删除这个文件后,原因找到了
所用的镜像中原本是低版本的pytest,这一版中有_pytest/resultlog.py这个文件,然而升级pytest后这个本应该被删除的文件不知道什么原因被保留了下来,而pytest-rerunfailures则误认为找到了_pytest/resultlog.py这个文件,调用过程中报错cannot import name ‘resultlog_key’

解决方法
镜像生成时,卸载一次pytest即可,这样原本的镜像里就不存在低版本的pytest了,也就没有_pytest/resultlog.py这个文件,然后直接装高版本的pytest即可