一个元宇宙项目,用于构建一个可以嵌入到 macOS、visionOS、iOS、tvOS 或 watchOS 项目中的 Python 版本。
此分支构建了 Python 3.11.6 的打包版本。其他 Python 版本可通过克隆主存储库的其他分支获得。
它的工作原理是下载、修补和构建 Python 和选定的先决条件的胖二进制文件,并将它们打包为可以合并到 XCode 项目中的静态库。Python 标准库中的二进制模块是静态编译的,但作为可以在运行时动态加载的对象分发。
它公开了 Python 标准库中几乎所有模块,除了
dbm.gnu
tkinter
readline
nis
(已弃用,根据 PEP594)ossaudiodev
(已弃用,根据 PEP594)spwd
(已弃用,根据 PEP594)以下标准库模块在 macOS 上可用,但在其他 Apple 平台上不可用
curses
grp
multiprocessing
posixshmem
posixsubprocess
syslog
二进制文件支持 macOS 的 x86_64 和 arm64;visionOS、iOS 和 tvOS 设备的 arm64;以及 watchOS 的 arm64_32。它还支持 x86_64 和 M1 硬件上的设备模拟器。这应该使代码能够在以下设备上运行
或者,要自行构建框架,请下载/克隆此存储库,然后在根目录中运行
make
(或 make all
) 构建所有内容。make macOS
构建 macOS 的所有内容。make xrOS
构建 visionOS 的所有内容。make iOS
构建 iOS 的所有内容。make tvOS
构建 tvOS 的所有内容。make watchOS
构建 watchOS 的所有内容。这应该
生成的支持包将打包为 dist
文件夹中的 .tar.gz
文件。
每个支持包包含
VERSIONS
,一个文本文件,描述用于构建支持包的代码的特定版本;bin
,一个文件夹,包含构建软件包所需的编译器的 shell 别名。这是必需的,因为 Xcode 使用 xcrun
别名来动态生成二进制文件的名称,但许多 C 工具期望 CC
不包含空格。platform-site
,一个文件夹,包含站点自定义脚本,这些脚本可用于使您的本地 Python 安装看起来像是针对平台支持的每个底层目标架构的设备上安装。这是必需的,因为当您运行 pip
时,您将在具有特定架构的 macOS 机器上;如果 pip
尝试安装二进制包,它将安装 macOS 二进制 wheel(这在 xrOS/iOS/tvOS/watchOS 上不起作用)。但是,如果您在调用 pip 时将 platform-site
文件夹添加到您的 PYTHONPATH
中,站点自定义将使您的 Python 安装返回与设备上行为一致的 platform
和 sysconfig
响应,这将导致 pip
安装平台适当的软件包。Python.xcframework
,Python 运行时库的多架构构建版本python-stdlib
,包含 Python 标准库的代码和二进制模块。在 xrOS、iOS、tvOS 和 watchOS 上,每个二进制模块都有 2 个副本 - 一个用于物理设备,一个用于模拟器。模拟器二进制文件是“胖”的,包含 x86_64 和 arm64 的代码。在构建二进制 wheel 包时,您可能需要使用此项目构建的库作为输入(例如,cffi
模块使用 libffi
)。为了支持这一点,本项目能够将这些依赖项打包为可以添加到 dist
目录的“wheels”。
要构建这些 wheel 包,请运行
make wheels
为所有移动平台制作所有 wheel 包make wheels-xrOS
构建所有 visionOS wheel 包make wheels-iOS
构建所有 iOS wheel 包make wheels-tvOS
构建所有 tvOS wheel 包make wheels-watchOS
构建所有 watchOS wheel 包