CPython 构建系统负责在不同平台和各种功能配置下配置和构建 Python。本页面解释了构建过程的核心组件、如何使用构建系统以及其内部工作原理。有关特定平台的安装详情,请参阅 Python 官方文档。
CPython 为不同平台有不同的构建系统
构建过程通常包括
来源:configure.ac1-102 Makefile.pre.in1-20 PCbuild/pythoncore.vcxproj1-20
Unix 构建系统依赖 GNU Autoconf 从 configure.ac 创建一个 configure 脚本。该脚本会检测系统功能并生成构建所需的必要文件。
重新生成 configure 脚本(仅 CPython 开发者需要)
make regen-configure
运行 configure 时,您可以指定各种选项来定制构建
./configure --with-pydebug --enable-shared
来源:configure.ac11-26 configure1-60 Doc/using/configure.rst9-30
配置完成后,您将使用 GNU Make 构建 Python
常用 make 目标
make:构建 Pythonmake test:运行测试套件make install:安装 Pythonmake clean:清理构建产物make regen-all:重新生成各种构建时生成的文件来源:Makefile.pre.in270-305 Makefile.pre.in582-585
Windows 构建系统使用 PCbuild 目录中的 Visual Studio 项目文件。
要在 Windows 上构建 Python,您可以使用:
PCbuild\build.bat -p x64 -c Release
选项包括:
-p:平台 (Win32, x64, ARM, ARM64)-c:配置 (Debug, Release, PGInstrument, PGUpdate)-d:Debug 构建(等同于 -c Debug)--experimental-jit:启用实验性 JIT 编译器来源:PCbuild/pythoncore.vcxproj1-30 PCbuild/_freeze_module.vcxproj1-50
Python 模块可以被
.so/.pyd 文件)在 Unix 系统中,模块配置由以下文件控制:
Modules/Setup:配置哪些模块是静态构建的Modules/Setup.bootstrap.in:配置引导所需模块Windows 模块配置由 PCbuild 目录中的各种 .vcxproj 文件控制。
来源:Modules/Setup1-10 Makefile.pre.in21-27 PCbuild/pythoncore.vcxproj100-116
CPython 支持多种构建优化
PGO 通过使用从代表性工作负载运行中收集的配置文件数据来提高性能。
./configure --enable-optimizations
这会运行带有代码插桩的 Python,收集配置文件数据,然后用优化后的配置重新构建。
BOLT 是一个链接后优化器,它重新排列代码以获得更好的指令缓存使用率。
./configure --enable-bolt
在安装了 LLVM 工具的 Linux 上可用。
Python 3.13+ 包含一个实验性 JIT 编译器。
./configure --enable-experimental-jit
适用于Windows
PCbuild\build.bat --experimental-jit
来源:configure.ac332-375 .github/workflows/jit.yml40-55 Makefile.pre.in333-347
CPython 3.13+ 支持一个实验性构建,其中全局解释器锁 (GIL) 被禁用。
./configure --disable-gil
适用于Windows
PCbuild\build.bat --disable-gil
这定义了 Py_GIL_DISABLED 宏,并在 sys.abiflags 中添加 "t"。
来源:configure.ac289-302 .github/workflows/reusable-ubuntu.yml95-100
CPython 包含各种作为构建过程一部分的生成文件。
重新生成所有生成的文件
make regen-all
make regen-stdlib-module-names
make regen-limited-abi
make regen-configure
来源:Doc/using/configure.rst68-96 Makefile.pre.in572-583
CPython 使用 GitHub Actions 进行持续集成
CI 系统在多个平台和配置上构建和测试 Python,包括:
来源: .github/workflows/build.yml24-39 .github/workflows/reusable-windows.yml22-36 .github/workflows/reusable-macos.yml22-37 .github/workflows/reusable-ubuntu.yml27-44
CPython 支持交叉编译各种平台
关键的交叉编译选项
--with-build-python: 指定构建主机的 Python 解释器--host: 指定目标平台三元组对于 WebAssembly (WASI) 构建,还需要 WASI SDK 等附加工具。
来源: configure.ac148-177 .github/workflows/reusable-wasi.yml14-32 Makefile.pre.in176-208
configure 脚本支持许多选项。一些重要的选项包括
| 选项 | 描述 |
|---|---|
--enable-shared | 构建共享 Python 库 (libpython3.x.so) |
--with-pydebug | 构建带调试符号的 Python |
--enable-optimizations | 启用基于配置文件的优化 (PGO) |
--enable-bolt | 启用二进制优化和布局工具 (BOLT) |
--disable-gil | 构建时支持自由线程(无 GIL) |
--enable-experimental-jit | 启用实验性 JIT 编译器 |
--with-openssl | 指定用于 SSL/TLS 支持的 OpenSSL 目录 |
--with-system-expat | 使用系统提供的 Expat 库 |
--with-ensurepip | 在安装 Python 时安装 pip |
有关完整列表,请运行 ./configure --help 或参考 配置过程页面。
来源: Doc/using/configure.rst99-158 configure.ac1042-1175
CPython 构建系统是一个复杂但灵活的系统,它适应多种平台、配置和优化技术。它允许 Python 使用不同的功能、优化以及为各种目标平台进行构建。
相关页面请参见
来源: configure1-10 Makefile.pre.in1-10 .github/workflows/build.yml1-10