Это метапакет для создания версии Python, которую можно встроить в проект macOS, iOS, tvOS или watchOS.
Эта ветка собирает упакованную версию Python 3.13 . Другие версии Python доступны путем клонирования других веток основного репозитория:
Он работает путем загрузки, исправления и создания толстого двоичного файла Python и выбранных предварительных компонентов, а также упаковки их в виде фреймворков, которые можно включить в проект XCode. Двоичные модули стандартной библиотеки Python распространяются как двоичные файлы, которые можно динамически загружать во время выполнения.
Пакет macOS представляет собой перекомплект официального двоичного файла macOS, модифицированный таким образом, чтобы его можно было перемещать, с удаленными пакетами IDLE, Tkinter и Turtle и примененным патчем соответствия App Store.
Пакеты iOS, tvOS и watchOS, скомпилированные в рамках этого проекта, используют официальный код PEP 730, который является частью Python 3.13, для обеспечения поддержки iOS; соответствующие патчи были перенесены в версии 3.9–3.12. Были применены дополнительные исправления для добавления поддержки tvOS и watchOS.
Бинарные файлы поддерживают x86_64 и Arm64 для macOS; Arm64 для устройств iOS и AppleTV; и Arm64_32 для устройств WatchOS. Он также поддерживает симуляторы устройств на оборудовании x86_64 и M1. Это должно позволить запустить код:
Самый простой способ использовать эти пакеты — создать проект с помощью Briefcase. Портфель загрузит предварительно скомпилированные версии этих пакетов поддержки и добавит их в проект Xcode (или предварительно созданное приложение-заглушку в случае macOS).
Предварительно созданные версии фреймворков можно загрузить со страницы выпусков Github и добавить в свой проект.
Альтернативно, чтобы собрать фреймворки самостоятельно, загрузите/клонируйте этот репозиторий, а затем в корневой каталог и запустите:
make
(или make all
), чтобы построить все.make macOS
чтобы создать все для macOS.make iOS
создавать все для iOS.make tvOS
чтобы построить все для tvOS.make watchOS
чтобы создать все для watchOS.Это должно:
Полученные пакеты поддержки будут упакованы в файл .tar.gz
в папке dist
.
Каждый пакет поддержки содержит:
VERSIONS
— текстовый файл, описывающий конкретные версии кода, использованные для сборки пакета поддержки;platform-site
— папка, содержащая сценарии настройки сайта, которые можно использовать для того, чтобы ваша локальная установка Python выглядела так, как будто она установлена на устройстве для каждой из базовых целевых архитектур, поддерживаемых платформой. Это необходимо, потому что при запуске pip
вы будете на компьютере MacOS с определенной архитектурой; если pip
попытается установить двоичный пакет, он установит двоичное колесо macOS (которое не будет работать на iOS/tvOS/watchOS). Однако, если вы добавите папку platform-site
в свой PYTHONPATH
при вызове pip, настройка сайта приведет к тому, что ваша platform
возврата установки Python и ответы sysconfig
будут соответствовать поведению на устройстве, что заставит pip
установить пакеты, соответствующие платформе.Python.xcframework
— мультиархитектурная сборка библиотеки времени выполнения Python. В iOS/tvOS/watchOS Python.xcframework
содержит фрагмент для каждого поддерживаемого ABI (устройства и симулятора). Папку, содержащую фрагмент, также можно использовать как PYTHONHOME
, поскольку она содержит каталоги bin
, include
и lib
.
Папка bin
не содержит исполняемых файлов Python (поскольку их нельзя вызвать). Однако он содержит псевдонимы оболочки для компиляторов, необходимых для сборки пакетов. Это необходимо, поскольку Xcode использует псевдоним xcrun
для динамического создания имен двоичных файлов, но многие инструменты C ожидают, что CC
не будет содержать пробелов.
Подробные инструкции по использованию пакета поддержки в собственном проекте см. в руководстве по использованию.
Этот проект содержит стандартную библиотеку Python, но не касается создания двоичных колес. Бинарные колеса для macOS можно получить из PyPI. Mobile Forge — это проект, который предоставляет инструменты для создания бинарных колес для iOS (и, возможно, для tvOS и watchOS, хотя это еще не тестировалось).
Следующие версии поддерживались раньше, но больше не поддерживаются: