加载conftest.py时遇ImportError:缺少必填字段'lineno'
解决方法
核心原因
Coverage 5.0版本不兼容Python 3.10,Python 3.10对字节码结构做了调整,老版本Coverage无法处理新的alias节点中的lineno字段,导致加载conftest.py时抛出错误。
具体修复步骤
- 卸载旧版本Coverage:
pip uninstall -y coverage - 安装兼容Python 3.10的Coverage版本(建议安装最新稳定版):
pip install coverage>=6.0 - 清理测试缓存,避免旧缓存干扰:
删除项目中的__pycache__文件夹、.pytest_cache目录和.coverage文件(如果存在)。 - 重新执行测试命令:
coverage run -m pytest -s tests
额外排查(如果上述步骤无效)
- 检查
conftest.py中的导入语句,确保没有使用错误的相对导入或循环导入。 - 验证虚拟环境是否正确激活,避免全局包与虚拟环境包冲突。
内容的提问来源于stack exchange,提问作者sage76
相关产品推荐
相关产品推荐

