PyPy venv使用pip报错No module named 'pip._vendor.six'问题求解
1 错误根本原因
- 核心冲突来自Debian系系统的pip定制规则与PyPy 3.8 v7.3.7版本的内置pip不兼容:Debian系发行版会默认移除pip内置捆绑的
pip._vendor.six依赖,将其转为系统级独立安装包,但PyPy配套的pip会硬编码查找内置路径下的six模块,无法识别系统安装的six,因此所有pip操作都会触发模块缺失报错。 - 你创建虚拟环境时调用了系统全局的virtualenv工具,会直接继承破损的pip配置到venv中,因此重建venv、安装pyenv/pipenv都无法解决问题,因为源头上的pip依赖结构已经损坏。
2 解决方案
2.1 无需重装现有环境的修复方法
首先确保你的PyPy虚拟环境处于激活状态,按以下步骤操作:
- 优先尝试用PyPy内置的ensurepip模块修复破损的pip:
python -m ensurepip --upgrade
- 若上述命令依然报错,改用手动重装pip的方式:
- 下载官方pip安装脚本
get-pip.py到本地 - 执行以下命令强制覆盖安装适配当前PyPy版本的pip:
python get-pip.py --force-reinstall
- 验证修复结果,执行命令:
pip -V
如果输出的pip版本关联路径指向当前激活的venv下的PyPy解释器,说明修复完成,后续可正常安装web3等依赖包。
2.2 备用重装方案
如果上述修复无效,可以用PyPy自带的venv模块创建全新虚拟环境,避免调用系统virtualenv带来的配置污染:
/home/x/pypy3.8-v7.3.7-linux64/bin/pypy -m venv new_ve
新环境激活后即可直接使用内置的正常pip,无需额外配置。
内容的提问来源于stack exchange,提问作者t_k
相关产品推荐
相关产品推荐

