独立且高度可移植的 Python 发行版

独立且高度可移植的 Python 发行版

Hacker News 摘要

原标题:Self-contained highly-portable Python distributions

python-build-standalone 项目旨在生成独立且高度可移植的 Python 发行版。这些发行版包含了功能完整且立即可用的 Python 安装环境。Python 标准库中的大部分扩展模块都已包含在内,其库依赖项要么随发行版一同分发,要么通过静态链接集成。

该项目的核心目标是最小化运行时依赖。在构建过程中,开发者限制了可以使用的 CPU 指令集,并精简了运行时所需的共享库集合。通过这种方式,生成的 Python 发行版能够在目标架构的任何系统上运行。

部分发行版不仅包含可执行文件,还附带了构建产物(如对象文件和库文件)以及描述发行版组装方式的详细元数据。下游的再打包工具可以重新组合这些构建产物,从而派生出自定义的 Python 发行版。例如,用户可以根据需求移除 SQLite 或 OpenSSL 等特定功能,这对于将 Python 嵌入到更大型的二进制程序中非常有用。

该项目有两个重要的姊妹项目:

PyOxidizer:它是一个下游再打包工具,利用该项目生成的构建产物来创建自定义发行版。

PyOxy:许多用户可能会发现 PyOxy 更符合需求。它在这些 Python 发行版的基础上添加了 Rust 代码,增强了 Python 解释器的功能。官方发布的 PyOxy 二进制文件是单文件可执行程序,提供了一个功能齐全的 Python 解释器。

文档的主要内容涵盖了以下几个方面:

运行发行版

这部分介绍了如何获取和提取发行版,说明了运行时的环境要求,以及如何添加额外的 Python 软件。此外还涉及了许可协议说明和如何重新消费构建产物。

构建指南

提供了在 Linux、macOS 和 Windows 系统上进行构建的具体说明。

行为差异与已知问题

文档列举了一些可能遇到的特殊情况,包括:

• Python 交互模式(REPL)中特殊键无法正常工作时的解决方法。

• UNIX 系统下不提供 tix。

• Windows 系统下不提供 pip.exe

• macOS 上链接静态库的相关说明。

• Linux 上对 libedit 的使用。

• 程序中引用的构建时路径。

技术细节

这部分深入探讨了项目的工作原理,包括针对 Setup.local 的修改技巧、依赖项说明以及升级 CPython 的流程。

发行版归档格式

项目提供两种类型的归档文件:

完整归档:包含所有开发组件和元数据。

仅安装归档:仅包含运行 Python 所需的最小化文件。

项目状态

文档记录了针对不同目标平台的说明,并列出了测试失败和跳过的具体情况。


原文:https://gregoryszorc.com/docs/python-build-standalone/main/

评论:https://news.ycombinator.com/item?id=49073942

Report Page