Создайте расширение Python C, используя MacOS 10.15 (Catalina), которое обратно совместимо (MacOS10.9 +) - PullRequest
4 голосов
/ 27 февраля 2020

Как я могу создать колесо расширения Python C для MacOS с обратной совместимостью (MacOS 10.9+) с использованием MacOS 10.15?

Это то, что у меня есть:

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, но мне это не кажется правильным.

Для сборок я просто использую виртуальные машины MacOS GitHub Actions.

Спасибо.

PS: компилятор, используемый для сборки, - GCC9

1 Ответ

2 голосов
/ 28 февраля 2020

Я нашел решение своей проблемы, и я опубликую ответ здесь, если у кого-то есть такая же проблема.

Чтобы решить проблему, мне также пришлось установить export MACOSX_DEPLOYMENT_TARGET=10.9 перед установкой python с использованием pyenv. Теперь pip wheel создает мое колесо с тегом macosx_10_9_x86_64.

Спасибо.

PS: При установке python через pyenv, python компилируется из исходного кода и каким-то образом учитывает флаг MACOSX_DEPLOYMENT_TARGET.

...