Mac下conda环境pip兼容标签过旧,如何更新?
问题描述
- 通过
conda create -n py39 python=3.9创建Python 3.9的conda环境后,执行pip install -i <custom index> my_package从自定义索引安装包失败,但Mac原生Python 3.9可成功安装 - 查看
pip install -vv -i <custom index> my_package日志发现,该conda环境的pip仅支持macosx_10_16这类旧兼容标签,无法匹配自定义索引中的cp39-cp39-macosx_11_0_universal2标签 - 但在该conda环境中执行
python3 -c "import packaging.tags; print(list(packaging.tags.sys_tags()))",能看到cp39-cp39-macosx_11_0_universal2标签,疑惑pip为何不识别
解决方法
- 更新pip到最新版本
conda环境默认安装的pip版本可能过旧,对新的macOS兼容标签支持不足,执行以下命令更新:
pip install --upgrade pip
更新完成后,用pip debug --verbose再次查看兼容标签列表,确认是否已包含目标标签。
设置环境变量指定macOS部署版本
如果更新pip后问题仍存在,可通过设置MACOSX_DEPLOYMENT_TARGET环境变量,让conda环境识别更高版本的macOS:- 若尚未创建环境,创建时指定:
MACOSX_DEPLOYMENT_TARGET=11.0 conda create -n py39 python=3.9 - 若环境已创建,激活环境后执行:
export MACOSX_DEPLOYMENT_TARGET=11.0
设置完成后重新尝试安装包。
- 若尚未创建环境,创建时指定:
更新packaging依赖库
pip的标签识别依赖packaging库,即使当前环境的packaging.tags能显示目标标签,pip依赖的packaging版本可能存在差异,执行以下命令更新:
pip install --upgrade packaging
- 临时使用源码编译安装(可选)
如果上述方法都无效,可强制pip从源码编译安装包(需确保环境有对应的编译依赖):
pip install -i <custom index> my_package --no-binary :all:
内容的提问来源于stack exchange,提问作者Lee
相关产品推荐
相关产品推荐

