Este é um meta-pacote para construir uma versão do Python que pode ser incorporada em um projeto macOS, iOS, tvOS ou watchOS.
Este branch constrói uma versão empacotada do Python 3.13 . Outras versões do Python estão disponíveis clonando outras ramificações do repositório principal:
Ele funciona baixando, corrigindo e construindo um binário gordo de Python e pré-requisitos selecionados, e empacotando-os como estruturas que podem ser incorporadas em um projeto XCode. Os módulos binários na biblioteca padrão do Python são distribuídos como binários que podem ser carregados dinamicamente em tempo de execução.
O pacote macOS é um reagrupamento do binário oficial do macOS, modificado para que seja relocável, com os pacotes IDLE, Tkinter e Turtle removidos e o patch de conformidade da App Store aplicado.
Os pacotes iOS, tvOS e watchOS compilados por este projeto usam o código oficial PEP 730 que faz parte do Python 3.13 para fornecer suporte iOS; os patches relevantes foram transferidos para 3.9-3.12. Patches adicionais foram aplicados para adicionar suporte a tvOS e watchOS.
Os binários suportam x86_64 e arm64 para macOS; arm64 para dispositivos iOS e appleTV; e arm64_32 para dispositivos watchOS. Ele também oferece suporte a simuladores de dispositivos em hardware x86_64 e M1. Isso deve permitir que o código seja executado em:
A maneira mais fácil de usar esses pacotes é criando um projeto com o Briefcase. O Briefcase baixará versões pré-compiladas desses pacotes de suporte e os adicionará a um projeto Xcode (ou aplicativo stub pré-construído, no caso do macOS).
Versões pré-construídas das estruturas podem ser baixadas da página de lançamentos do Github e adicionadas ao seu projeto.
Alternativamente, para construir os frameworks por conta própria, baixe/clone este repositório e, em seguida, no diretório raiz e execute:
make
(ou make all
) para construir tudo.make macOS
crie tudo para o macOS.make iOS
para construir tudo para iOS.make tvOS
para construir tudo para tvOS.make watchOS
para construir tudo para watchOS.Isso deveria:
Os pacotes de suporte resultantes serão empacotados como um arquivo .tar.gz
na pasta dist
.
Cada pacote de suporte contém:
VERSIONS
, um arquivo de texto que descreve as versões específicas do código usado para construir o pacote de suporte;platform-site
, uma pasta que contém scripts de personalização de site que podem ser usados para fazer com que sua instalação local do Python pareça uma instalação no dispositivo para cada uma das arquiteturas de destino subjacentes suportadas pela plataforma. Isso é necessário porque ao executar pip
você estará em uma máquina macOS com uma arquitetura específica; se pip
tentar instalar um pacote binário, ele instalará uma roda binária do macOS (que não funcionará no iOS/tvOS/watchOS). No entanto, se você adicionar a pasta platform-site
ao seu PYTHONPATH
ao invocar o pip, a personalização do site fará com que a instalação do Python retorne respostas platform
e sysconfig
consistentes com o comportamento do dispositivo, o que fará com que pip
instale pacotes apropriados à plataforma.Python.xcframework
, uma construção multiarquitetura da biblioteca de tempo de execução Python No iOS/tvOS/watchOS, o Python.xcframework
contém uma fatia para cada ABI compatível (dispositivo e simulador). A pasta que contém a fatia também pode ser usada como PYTHONHOME
, pois contém um diretório bin
, include
e lib
.
A pasta bin
não contém executáveis Python (pois não podem ser invocados). No entanto, ele contém aliases de shell para os compiladores necessários para construir pacotes. Isso é necessário porque o Xcode usa o alias xcrun
para gerar dinamicamente o nome dos binários, mas muitas ferramentas C esperam que CC
não contenha espaços.
Para obter instruções detalhadas sobre como usar o pacote de suporte em seu próprio projeto, consulte o guia de uso
Este projeto empacota a biblioteca padrão Python, mas não aborda a construção de rodas binárias. Rodas binárias para macOS podem ser obtidas no PyPI. Mobile Forge é um projeto que fornece ferramentas para construir rodas binárias para iOS (e potencialmente para tvOS e watchOS, embora isso não tenha sido testado).
As seguintes versões eram suportadas no passado, mas não são mais mantidas: