Python 源码是基于 C 的,在 Windows 下编译 Python 需要安装 Microsoft Visual Studio (MSVC)。它的社区版是免费的,可以从官网下载。
https://visualstudio.microsoft.com/zh-hans/
下载 Community 2022 版本,下载下来后是个2M大小的安装器,需要在线安装。在选择安装组件时,选择 Python workload 和 Python 本地开发组件。
虽然 Python 代码是基于 C 的,但编译工具还是使用的是 Visual Stdio C++,C++编译器是可以编译C代码的。从 Python 的版本信息中我们可以获取到编译工具的信息,比如直接执行本机上装好的 python:
$ which python
/c/Users/Administrator/.pyenv/pyenv-win/shims/python
$ python
Python 3.9.0 (tags/v3.9.0:9cf6752, Oct 5 2020, 15:34:40)
[MSC v.1927 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>
复制
其中的 [MSC v.1927 64 bit (AMD64)] 就是编译器信息,使用的是 Visual C++ 2019 (16.7)。编译器版本可以参考如下列表:
(来源:https://stackoverflow.com/questions/2676763/what-version-of-visual-studio-is-python-on-my-computer-compiled-with)
所以在选择 Visual Stdio 组件时需要把 C++ 的组件也选上。C++ 的编译器有好几个版本,其中 MSVC v143 适用于 VS 2022 C++,还有几个兼容老版本的 v142 适用于 VS 2019,v141 适用于 VS 2017,v140 适用于 VS 2015。选中 v143 就够了,如果为了兼容以前的老版本可以选 v142 , v141 。
安装完 Visual Stdio,我们从 Python 的官网下载 Python 源码包。
https://www.python.org/downloads/source/
下载已发布的版本 v3.10.7,下载的压缩包解压后在源码目录下有个PCbuild目录。在命令行执行 build.bat 进行编译:
C:\>cd /d d:\Python-3.10.7\PCbuild
d:\Python-3.10.7\PCbuild> build.bat
复制
编译过程需要连网,会调用本机的 python 从网上下载所需要的依赖,同时也会调用 git ,需要将 git 可执行文件的目录加到 Path 环境变量中。
整个编译过程大概持续3分钟左右,编译目录由多个 VS 工程文件组成,分别用来构造动态库和可执行文件。
编译完成后,我们运行编译好的 python.exe 可执行文件,banner 信息如下,其中编译器信息为 [MSC v.1930 64 bit (AMD64)] ,v1930 代表的就是 Visual Studio 2022 (17.0)
全文完。
如果转发本文,文末务必注明:“转自微信公众号:生有可恋”。