如何使用MacOS 10.15为MacOS创建向后兼容(MacOS 10.9+)的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
,并且与Linux上的auditwheel
不同,delocate-wheel
不会修改控制盘的名称。因此,如果我使用twine
将其上传到PyPI上,则只有使用MacOS 10.15的用户才能使用pip
安装它。我想我可以手动将其重命名为myapp-0.0.1-cp37-cp37m-macosx_10_9_x86_64.whl
,但这听起来不太合适
对于构建,我只是使用GitHub Actions MacOS虚拟机
多谢各位
PS:用于构建的编译器是GCC9
我找到了问题的解决方案,我会把答案贴在这里,以防其他人也有同样的问题
为了解决这个问题,我还必须在使用
pyenv
安装python之前设置export MACOSX_DEPLOYMENT_TARGET=10.9
。现在pip wheel
用标签macosx_10_9_x86_64
创建我的轮子多谢各位
PS:当通过
pyenv
安装python时,python是从源代码编译的,并且以某种方式考虑了标志MACOSX_DEPLOYMENT_TARGET
根据this answer,python解释器构建时使用的
MACOSX_DEPLOYMENT_TARGET
值决定了可用于创建控制盘的默认值和最小值正如您所注意到的,来自
actions/setup-python
的python使用了相对较新的版本(当前为10.14),这使得它与旧版本不兼容。在actions/setup-python#26中有一个公开的问题作为另一种解决方法,我建议通过conda设置python。这会带来一些额外的开销(约2分钟),但仍然比手动构建python好得多。例如:
这将导致以下部署目标:
相关问题 更多 >
编程相关推荐