macOS构建含C扩展的Python包wheel安装报平台不支持错误
为什么构建出的wheel文件标注的系统版本是10.14.6
wheel默认的目标系统版本继承自你安装的Python 3.8解释器编译时设定的部署目标版本,而非当前运行的操作系统版本。你可以执行以下命令验证Python的默认部署目标:python3 -c "import sysconfig; print(sysconfig.get_config_var('MACOSX_DEPLOYMENT_TARGET'))"
输出结果大概率为10.14.6,这就是wheel文件名里系统版本的来源。
手动修改文件名后仍然安装失败的原因
pip校验wheel兼容性时,不只会读取文件名的标签信息,还会读取wheel包内部*.dist-info目录下的WHEEL文件里的Tag字段值,你只修改了文件名,内部存储的标签没有同步更新,因此pip还是会判定该wheel不匹配当前平台。
解决方法
- 重新构建匹配平台的wheel:构建前先在终端执行
export MACOSX_DEPLOYMENT_TARGET=10.15,再运行python3 setup.py bdist_wheel,生成的wheel就会匹配你的系统版本,可直接正常安装。 - 无需重新构建的临时方案:如果你的C扩展没有用到macOS 10.15+才有的系统API,可以直接强制安装原始wheel,命令为
python3 -m pip install --force-reinstall dist/mypackage-1.0-cp38-cp38-macosx_10_14_6_x86_64.whl,安装后可正常运行。
内容的提问来源于stack exchange,提问作者Sophia J
相关产品推荐
相关产品推荐

