使用tox运行Pytest时出现AttributeError: module 'py' has no attribute 'io'错误
解决
AttributeError: module 'py' has no attribute 'io' 问题 这个错误的核心原因是**py库版本不兼容**——pytest仓库当前代码依赖的py库版本和你环境中安装的版本不匹配,或者全局环境的py模块污染了tox的隔离环境。
下面是具体的修复步骤:
首先进入pytest仓库目录:
cd pytest清理tox缓存的旧虚拟环境,避免残留依赖干扰:
tox -r这个命令会强制重新创建所有测试环境,彻底清除之前的缓存内容。
检查仓库依赖约束并更新本地
py库版本:
打开仓库根目录下的pyproject.toml或setup.py,确认其中对py库的版本要求(当前pytest通常要求py>=1.10.0)。如果本地安装的版本过低,手动安装符合要求的版本:pip install "py>=1.10.0"强制tox完全隔离全局环境:
若全局环境的旧版本py模块仍在干扰,运行tox时添加参数强制隔离系统site-packages:tox --no-site-packages最后重新运行tox:
tox
如果问题依然存在,检查你的Python版本是否符合pytest仓库的要求——部分旧Python版本(如3.6及以下)可能和新版py库不兼容,切换到仓库指定的Python版本后重试即可。
内容的提问来源于stack exchange,提问作者Irina
相关产品推荐
相关产品推荐

