Ini adalah paket meta untuk membuat versi Python yang dapat disematkan ke proyek macOS, iOS, tvOS, atau watchOS.
Cabang ini membangun versi paket Python 3.13 . Versi Python lainnya tersedia dengan mengkloning cabang lain dari repositori utama:
Ia bekerja dengan mengunduh, menambal, dan membangun biner gemuk Python dan prasyarat yang dipilih, dan mengemasnya sebagai kerangka kerja yang dapat dimasukkan ke dalam proyek XCode. Modul biner di pustaka standar Python didistribusikan sebagai biner yang dapat dimuat secara dinamis saat runtime.
Paket macOS adalah bundling ulang biner macOS resmi, dimodifikasi sehingga dapat direlokasi, dengan paket IDLE, Tkinter, dan turtle dihapus, dan patch kepatuhan App Store diterapkan.
Paket iOS, tvOS, dan watchOS yang dikompilasi oleh proyek ini menggunakan kode resmi PEP 730 yang merupakan bagian dari Python 3.13 untuk menyediakan dukungan iOS; patch yang relevan telah di-backport ke 3.9-3.12. Patch tambahan telah diterapkan untuk menambahkan dukungan tvOS dan watchOS.
Biner mendukung x86_64 dan arm64 untuk macOS; arm64 untuk perangkat iOS dan appleTV; dan arm64_32 untuk perangkat watchOS. Ini juga mendukung simulator perangkat pada perangkat keras x86_64 dan M1. Ini harus memungkinkan kode untuk berjalan di:
Cara termudah untuk menggunakan paket ini adalah dengan membuat proyek dengan Briefcase. Briefcase akan mengunduh versi paket dukungan yang telah dikompilasi sebelumnya, dan menambahkannya ke proyek Xcode (atau aplikasi stub yang dibuat sebelumnya, dalam kasus macOS).
Versi kerangka kerja yang telah dibuat sebelumnya dapat diunduh dari halaman rilis Github dan ditambahkan ke proyek Anda.
Alternatifnya, untuk membangun kerangka kerja Anda sendiri, unduh/kloning repositori ini, lalu di direktori root, dan jalankan:
make
(atau make all
) untuk membangun segalanya.make macOS
untuk membangun segalanya untuk macOS.make iOS
untuk membangun segalanya untuk iOS.make tvOS
untuk membangun segalanya untuk tvOS.make watchOS
untuk membangun segalanya untuk watchOS.Ini seharusnya:
Paket dukungan yang dihasilkan akan dikemas sebagai file .tar.gz
di folder dist
.
Setiap paket dukungan berisi:
VERSIONS
, file teks yang menjelaskan versi kode spesifik yang digunakan untuk membangun paket dukungan;platform-site
, folder yang berisi skrip penyesuaian situs yang dapat digunakan untuk membuat instalasi Python lokal Anda terlihat seperti instalasi pada perangkat untuk setiap arsitektur target dasar yang didukung oleh platform. Ini diperlukan karena saat Anda menjalankan pip
Anda akan menggunakan mesin macOS dengan arsitektur tertentu; jika pip
mencoba menginstal paket biner, ia akan menginstal roda biner macOS (yang tidak akan berfungsi di iOS/tvOS/watchOS). Namun, jika Anda menambahkan folder platform-site
ke PYTHONPATH
Anda saat memanggil pip, penyesuaian situs akan membuat respons platform
dan sysconfig
instalasi Python Anda konsisten dengan perilaku pada perangkat, yang akan menyebabkan pip
menginstal paket yang sesuai platform.Python.xcframework
, build multi-arsitektur dari pustaka runtime Python Di iOS/tvOS/watchOS, Python.xcframework
berisi potongan untuk setiap ABI (perangkat dan simulator) yang didukung. Folder yang berisi irisan juga dapat digunakan sebagai PYTHONHOME
karena berisi direktori bin
, include
, dan lib
.
Folder bin
tidak berisi executable Python (karena tidak dapat dipanggil). Namun, ia mengandung alias shell untuk kompiler yang diperlukan untuk membangun paket. Hal ini diperlukan karena Xcode menggunakan alias xcrun
untuk menghasilkan nama binari secara dinamis, namun banyak perkakas C mengharapkan CC
tidak mengandung spasi.
Untuk petunjuk rinci tentang penggunaan paket dukungan di proyek Anda sendiri, lihat panduan penggunaan
Proyek ini mengemas pustaka standar Python, tetapi tidak membahas pembuatan roda biner. Roda biner untuk macOS dapat diperoleh dari PyPI. Mobile Forge adalah proyek yang menyediakan alat untuk membangun roda biner untuk iOS (dan berpotensi untuk tvOS dan watchOS, meskipun hal itu belum diuji).
Versi berikut ini pernah didukung sebelumnya, namun kini tidak lagi dipertahankan: