python - 使用向后兼容的 MacOS 10.15 (Catalina) 创建 Python C 扩展 (MacOS10.9+)
问题描述
如何使用 MacOS 10.15 为向后兼容(MacOS 10.9+)的 MacOS 创建 Python C 扩展轮?
这是我到目前为止所拥有的:
export MACOSX_DEPLOYMENT_TARGET=10.9
python -m pip wheel . -w wheels --no-deps
python -m pip install delocate
for whl in wheels/*.whl; do
delocate-wheel -w wheels_fixed -v "$whl"
done
不幸的是,会pip wheel
生成一个文件myapp-0.0.1-cp37-cp37m-macosx_10_15_x86_64.whl
,并且与auditwheel
Linux 不同,delocate-wheel
它不会修改轮子的名称。因此,如果我使用 将其上传到 PyPI twine
,则只有 MacOS 10.15 的用户才能使用pip
. 我想我可以手动将其重命名为myapp-0.0.1-cp37-cp37m-macosx_10_9_x86_64.whl
,但这对我来说听起来不对。
对于构建,我只使用 GitHub Actions MacOS 虚拟机。
谢谢你。
PS:构建使用的编译器是GCC9
解决方案
我找到了我的问题的解决方案,如果其他人有同样的问题,我会在这里发布答案。
为了解决这个问题,我还必须export MACOSX_DEPLOYMENT_TARGET=10.9
在安装 python 之前设置pyenv
. 现在pip wheel
用标签创建我的轮子macosx_10_9_x86_64
。
谢谢你。
PS:通过安装python时pyenv
,python是从源代码编译的,并且以某种方式考虑了标志MACOSX_DEPLOYMENT_TARGET
。
推荐阅读
- woocommerce - 在 URL 中不带 ?pay_for_order=true&key=wc_order_XXXXXX 参数支付 Woocommerce 订单
- python - 获取 sqlite3.OperationalError:输入不完整
- python - 如何从 linspace 中采样而不批量替换
- c# - 使用城堡为合同的命名端点创建 WCF 代理
- javascript - 组件重新渲染时数组为空
- javascript - PHP Datables 没有显示任何行 - 服务器端
- excel - 带有或条件的 COUNTIFS
- reactjs - 在外部 iframe 上填充输入
- kubernetes - 我想用 ansible 编辑 openshift 路由器默认部署
- wicket - Wicket - 创建动态标签