4.6 在 Windows 上编译 CPython
有两种方法可以从 Windows 编译 CPython 二进制文件和库。
第一种从命令行编译,这需要用到 Visual Studio 自带的 Microsoft Visual C++ 编译器。第二种是通过 Visual Studio 打开 PCBuild/pcbuild.sln
直接进行构建。
安装依赖项
不论使用命令行还是 Visual Studio 进行编译,你都需要安装一些外部工具、库和 C 头文件。
在 PCBuild
文件夹中有一个 .bat
文件,可以为你自动执行上述安装操作。
在 PCBuild
中打开命令行并执行 get_externals.bat
:
现在你可以从命令行或 Visual Studio 进行编译了。
从命令行编译
从命令行进行编译时,需要选择要编译的 CPU 架构。默认值为 win32,但你可能需要 64 位 (amd64) 二进制文件。
如果你进行任何调试,调试版本提供了在源代码中添加断点的能力。要构建调试版本,请添加 -c Debug
以指定调试配置。
默认情况下,build.bat
将获取外部依赖项,但由于我们已经完成了该步骤,它会打印一条跳过下载的消息:
此命令将生成 Python 二进制文件 PCbuild/amd64/python_d.exe
。该二进制文件可以直接从命令行启动:
现在已经进入了你编译的 CPython 二进制文件的 REPL 中。
要编译二进制文件发行版:
上述命令将生成二进制文件 PCbuild/amd64/python.exe
。
后缀 _d
表明 CPython 是基于 Debug
配置构建的。
python.org 上发布的二进制文件在基于 Profile-Guided-Optimization (PGO) 配置编译的。有关 PGO 的更多详细信息,请参阅本章末尾的 Profile-Guided-Optimization (PGO) 部分。
参数
build.bat 支持以下参数:
标记 | 作用 | 可选值 |
---|---|---|
-p | 指定构建平台的 CPU 架构 |
|
-c | 指定构建配置 |
|
-t | 指定构建目标 |
|
标记
下面是一些可用于 build.bat
的可选标志。如需完整列表,请运行 build.bat -h
。
标记 | 作用 |
---|---|
-v | 详细模式。在构建期间显示信息性消息 |
-vv | 非常详细的模式。在构建期间显示详细消息 |
-q | 安静模式。仅在构建期间显示警告和错误 |
-e | 下载并安装外部依赖项(默认) |
-E | 不下载和安装外部依赖项 |
--pgo | 编译时开启 PGO |
--regen | 当更新语言时,使用该选项重新生成新语法和 token |
从 Visual Studio 编译
PCBuild
文件夹中有一个 Visual Studio 解决方案文件 PCBuild/pcbuild.sln
,其用于构建和探索 CPython 源代码。
加载解决方案文件时,它会提示将解决方案中的项目重定向到安装的 C/C++ 编译器版本。Visual Studio 也会定位已安装的 Windows SDK 的版本。
确保将 Windows SDK 版本更改为最新安装的版本,并将平台工具集更改为最新版本。如果错过了这个窗口,你可以在 Solutions and Projects 窗口中右键单击解决方案文件,然后单击 Retarget Solution
。
导航到 Build/Configuration Manager
,确保 Active solution configuration 设置为 Debug 且 Active Solution Platform 设置为 x64
(64 位 CPU 架构)或 win32
(32 位)。
接下来,通过按 CTRL + SHIFT + B
或选择 Build/Build Solution
来构建 CPython。若收到有关缺少 Windows SDK 的任何错误,请确保在 Retarget Solution 窗口中设置了正确的定位设置。在开始菜单中应该能看到 Windows Kits 文件夹,文件夹内有 Windows Software Development Kit(Windows 软件开发工具包)。
第一次构建可能需要 10 分钟或更长时间。构建完成后,可能会看到一些可以忽略的警告。
若需启动调试版本的 CPython,请按 F5
,CPython 将以调试模式启动且直接进入 REPL:
图片不翻译。
你可以通过在顶部菜单栏上将构建配置从 Debug 更改为 Release 并重新运行 Build/Build Solution
,来运行发布版本的构建。现在在目录 PCbuild/amd64
中同时拥有了 Python 二进制文件的调试和发布版本。
通过在顶部菜单中选择 Tools/Python/Python Environments
,可以将 Visual Studio 设置为使用发布或调试版本打开 REPL。在 Python Environments 面板中,单击 Add Environment
,然后可以选择调试或发布二进制文件作为目标。调试二进制文件以 _d.exe
结尾,例如 python_d.exe
或 pythonw_d.exe
。
你或许更希望使用调试二进制文件,因为它在 Visual Studio 中提供调试支持,这在你通读本书时会很有用。
在 Add Environment 窗口中,分别将解释器路径和窗口解释器设置为 PCbuild/amd64
中的 python_d.exe
文件和 pythonw\_d.exe
文件:
图片不翻译。
在 Python Environments 窗口中单击 Open Interactive Window
来启动 REPL 会话,你将看到 Python 编译版本的 REPL:
图片不翻译。
本书中将有带有示例命令的 REPL 会话。如果你想在代码中设置任何断点,我鼓励使用调试二进制文件来运行这些 REPL 会话。
为了更轻松地浏览代码,在 Solution 视图中,单击 Home 图标旁边的切换按钮以切换到 Folder 视图:
图片不翻译。
Last updated