这是一个元包,用于构建可以嵌入到 macOS、iOS、tvOS 或 watchOS 项目中的 Python 版本。
该分支构建了 Python 3.13 的打包版本。通过克隆主存储库的其他分支可以获得其他 Python 版本:
它的工作原理是下载、修补和构建 Python 的胖二进制文件和选定的先决条件,并将它们打包为可以合并到 XCode 项目中的框架。 Python 标准库中的二进制模块作为可以在运行时动态加载的二进制文件分发。
macOS 软件包是官方 macOS 二进制文件的重新捆绑,经过修改以使其可重新定位,删除了 IDLE、Tkinter 和turtle 软件包,并应用了 App Store 合规性补丁。
该项目编译的 iOS、tvOS 和 watchOS 包使用作为 Python 3.13 一部分的官方 PEP 730 代码来提供 iOS 支持;相关补丁已向后移植到 3.9-3.12。已应用其他补丁来添加 tvOS 和 watchOS 支持。
二进制文件支持 macOS 的 x86_64 和 arm64;适用于 iOS 和 appleTV 设备的arm64;以及用于 watchOS 设备的arm64_32。它还支持 x86_64 和 M1 硬件上的设备模拟器。这应该使代码能够运行在:
使用这些包的最简单方法是使用 Briefcase 创建项目。 Briefcase 将下载这些支持包的预编译版本,并将它们添加到 Xcode 项目(或预构建存根应用程序,如果是 macOS)。
可以从 Github 发布页面下载框架的预构建版本并将其添加到您的项目中。
或者,要自行构建框架,请下载/克隆此存储库,然后在根目录中运行:
make
(或make all
)来构建一切。make macOS
为 macOS 构建一切。make iOS
为 iOS 构建一切。make tvOS
为 tvOS 构建一切。make watchOS
为 watchOS 构建一切。这应该:
生成的支持包将打包为dist
文件夹中的.tar.gz
文件。
每个支持包包含:
VERSIONS
,一个文本文件,描述用于构建支持包的特定代码版本;platform-site
,一个包含站点自定义脚本的文件夹,可用于使本地 Python 安装看起来像是平台支持的每个底层目标体系结构的设备上安装。这是必需的,因为当您运行pip
时,您将在具有特定架构的 macOS 计算机上;如果pip
尝试安装二进制包,它将安装 macOS 二进制轮(不适用于 iOS/tvOS/watchOS)。但是,如果您在调用 pip 时将platform-site
文件夹添加到PYTHONPATH
,则站点自定义将使您的 Python 安装返回与设备上行为一致的platform
和sysconfig
响应,这将导致pip
安装适合平台的软件包。Python.xcframework
,Python 运行时库的多架构构建在 iOS/tvOS/watchOS 上, Python.xcframework
包含每个受支持的 ABI(设备和模拟器)的切片。包含切片的文件夹也可以用作PYTHONHOME
,因为它包含bin
、 include
和lib
目录。
bin
文件夹不包含 Python 可执行文件(因为无法调用它们)。但是,它确实包含构建包所需的编译器的 shell 别名。这是必需的,因为 Xcode 使用xcrun
别名动态生成二进制文件的名称,但许多 C 工具期望CC
不包含空格。
有关在自己的项目中使用支持包的详细说明,请参阅使用指南
该项目打包了Python标准库,但不涉及构建二进制轮子。 macOS 的二进制轮子可以从 PyPI 获得。 Mobile Forge 是一个项目,它提供了为 iOS 构建二进制轮子的工具(也可能为 tvOS 和 watchOS,尽管尚未经过测试)。
以下版本过去受支持,但不再维护: