Python3.7环境pip安装stable-baselines3[extra]报错排查
报错根本原因
该报错和Python编译时使用的GCC版本无关,核心是本地环境与Colab环境的Python打包工具链存在差异:
- 本地Ubuntu 22.04下的虚拟环境未完全隔离系统级Python包,构建
AutoROM.accept-rom-license的wheel包时,直接调用了系统路径/usr/lib/python3/dist-packages/下Ubuntu自行打补丁修改过的setuptools、distutils组件 - 旧版本
AutoROM.accept-rom-license的自定义安装脚本和该版本系统setuptools存在逻辑冲突,执行到install_lib步骤时找不到install_layout属性,直接抛出异常 - Google Colab环境预装的pip、setuptools、wheel均经过版本适配,且虚拟环境严格隔离系统Python包,因此不会触发该兼容问题
额外提醒:你最初执行的安装命令存在笔误,stable和baselines3之间应为连字符而非空格,正确包名是stable-baselines3[extra],空格会让pip将两个字符串识别为独立包,触发额外安装错误
解决方案
按优先级尝试以下操作,均可解决该问题:
- 方案1:升级虚拟环境内打包工具,强制使用标准库distutils
先激活项目所用的虚拟环境,依次执行以下命令:
执行完成后重新运行正确的stable-baselines3安装命令即可。第二条命令的作用是强制setuptools调用Python标准库自带的原生distutils,跳过Ubuntu修改过的系统版本,直接避开属性缺失问题。pip install --upgrade pip setuptools wheel export SETUPTOOLS_USE_DISTUTILS=stdlib - 方案2:提前安装兼容版本的问题依赖,跳过wheel构建流程
如果方案1执行后仍报错,可先单独安装已经修复兼容问题的AutoROM依赖版本:
安装完成后再安装stable-baselines3[extra],pip检测到该依赖已存在,就不会重新拉取旧版本触发构建报错。pip install AutoROM.accept-rom-license==0.6.1 - 方案3:重建关闭系统包继承的隔离虚拟环境
从报错栈可以看出当前虚拟环境默认开启了系统包访问权限,长期使用很容易出现各类版本冲突,可直接重建干净的虚拟环境:
如果是在PyCharm中创建虚拟环境,直接取消创建向导里的「继承全局站点包」勾选即可,创建完成后在PyCharm集成终端升级打包工具,再执行安装命令即可,后续在PyCharm、Jupyter中选择该虚拟环境作为解释器就能正常使用。# 进入项目目录后执行,创建不继承系统包的虚拟环境 python3.7 -m venv sb3_venv source sb3_venv/bin/activate pip install --upgrade pip setuptools wheel
内容的提问来源于stack exchange,提问作者JAMSHAID
相关产品推荐
相关产品推荐

