Python-Apple-support跨平台构建详解:支持macOS/iOS/tvOS/watchOS/visionOS
Python-Apple-support跨平台构建详解:支持macOS/iOS/tvOS/watchOS/visionOS
Python-Apple-support是一个元包,专门用于构建可嵌入macOS、iOS、tvOS、watchOS或visionOS项目的Python版本。它通过下载、打补丁和构建Python及选定的先决条件的胖二进制文件,并将它们打包为可整合到Xcode项目中的框架,为开发者提供了便捷的跨平台Python集成解决方案。
核心功能与支持范围 🚀
Python-Apple-support支持多种Apple平台,包括:
- macOS:支持macOS 11(Big Sur)或更高版本,兼容x86_64和arm64架构
- iOS:支持iOS 13.0或更高版本,适用于iPhone、iPad等设备
- tvOS:支持tvOS 12.0或更高版本,适用于Apple TV设备
- watchOS:支持watchOS 4.0或更高版本,适用于Apple Watch设备
- visionOS:支持visionOS 2.0或更高版本,适用于Apple Vision Pro
该项目构建的二进制文件支持多种架构,包括x86_64和arm64(macOS)、arm64(iOS和Apple TV设备)、arm64_32(watchOS设备)等,确保代码能在各种Apple设备上运行。
快速开始:3种使用方式
1. 使用Briefcase(推荐)
最简单的使用方式是通过Briefcase创建项目。Briefcase会自动下载预编译的支持包,并将其添加到Xcode项目中(对于macOS,则添加到预构建的存根应用程序中)。
2. 下载预构建框架
您可以从项目的发布页面下载预构建的框架,然后手动添加到您的项目中。
3. 手动构建框架
如果您需要自定义构建,可以按照以下步骤操作:
-
克隆仓库:
git clone https://gitcode.com/gh_mirrors/py/Python-Apple-support cd Python-Apple-support -
运行构建命令:
- 构建所有平台:
make或make all - 仅构建macOS:
make macOS - 仅构建iOS:
make iOS - 仅构建tvOS:
make tvOS - 仅构建watchOS:
make watchOS - 仅构建visionOS:
make visionOS
- 构建所有平台:
构建完成后,生成的支持包将以.tar.gz文件的形式存放在dist文件夹中。每个支持包包含VERSIONS文本文件和Python.xcframework多架构构建的Python运行时库。
手动集成到项目
添加到Xcode项目
虽然Briefcase是官方推荐的使用方式,但您也可以手动将Python支持包添加到任何Xcode项目中。基本步骤包括:
- 将Python XCFramework添加到项目中
- 在代码中初始化Python运行时
- 配置必要的环境变量
详细集成步骤可参考CPython使用指南:
对于tvOS、watchOS和visionOS,可以大致遵循iOS指南的说明,在第一个脚本中更改一些平台名称。
Objective-C初始化示例
在Objective-C中初始化Python运行时的基本代码:
#include <Python/Python.h>
NSString *resourcePath = [[NSBundle mainBundle] resourcePath];
NSString *pythonHome = [NSString stringWithFormat:@"%@/python", resourcePath, nil];
NSString *appPath = [NSString stringWithFormat:@"%@/app", resourcePath, nil];
setenv("PYTHONHOME", [pythonHome UTF8String], 1);
setenv("PYTHONPATH", [appPath UTF8String], 1);
Py_Initialize();
// 现在Python解释器已准备好使用
Swift初始化示例
在Swift中初始化Python运行时的基本代码:
import Python
guard let pythonHome = Bundle.main.path(forResource: "python", ofType: nil) else { return }
let appPath = Bundle.main.path(forResource: "app", ofType: nil)
setenv("PYTHONHOME", pythonHome, 1)
setenv("PYTHONPATH", appPath, 1)
Py_Initialize()
// 现在Python解释器已准备好使用
访问Python运行时
有两种方式可以在项目代码中访问Python运行时:
1. 嵌入式C API
您可以使用Python嵌入式C API来调用Python代码并与Python对象交互。这是一个原始的C API,可同时用于Objective C和Swift。
2. PythonKit(Swift专用)
如果您使用Swift,可以考虑使用PythonKit,它提供了一个Swift API来运行Python代码。使用方法如下:
- 将Python Apple Support包添加到项目中并实例化Python解释器
- 使用Swift Package Manager添加PythonKit到项目
- 导入并使用PythonKit:
import PythonKit
let sys = Python.import("sys")
print("Python Version: \(sys.version_info.major).\(sys.version_info.minor)")
print("Python Encoding: \(sys.getdefaultencoding().upper())")
print("Python Path: \(sys.path)")
构建二进制Wheels
该项目打包了Python标准库,但不涉及构建二进制wheels。macOS的二进制wheels可以从PyPI获取。Mobile Forge项目提供了构建iOS二进制wheels的工具(也可能适用于tvOS、watchOS和visionOS,但尚未经过测试)。
支持的Python版本
当前分支构建的是Python 3.14的打包版本。其他Python版本可通过克隆主仓库的其他分支获得:
历史上支持但不再维护的版本包括Python 2.7、3.4-3.9。
总结
Python-Apple-support为在Apple平台上嵌入Python提供了完整的解决方案,支持从macOS到visionOS的全系列Apple设备。无论是通过Briefcase快速集成,还是手动构建定制框架,都能满足不同开发者的需求。通过Objective-C或Swift的简单初始化,即可在项目中无缝使用Python的强大功能,为跨平台应用开发带来更多可能性。
详细使用指南请参考项目中的USAGE.md文件。
更多推荐



所有评论(0)