还是以简单案例说明重新编译Python源代码能做什么吧,一个是为了从源代码角度学习Python的运行机制,一个是为了可以从C语言的角度来扩展开发Python,文章《【Python研发】从小整数对象池切入对C语言源码的理解》中提到小整数对象池的范围为[-5, 257),这里我将源代码中这个范围修改为[0, 1000),然后重新编译源代码就会得到一个新的Python版本实现我想要的效果
可以看到这和官方的Python版本输出的结果已经不同了,实际如果你对C语言编程有一定的火候的话,可以在源代码中插入任何你想要的代码,下面来看如何重新编译Python的源代码
首先笔者的操作系统是Win7 x64位,安装了Visual Studio Professional 2015 Update 3,可以从https://www.python.org/官网下载Python 3.6.2的源代码
找个路径解压,比如C:\Python-3.6.2,可以看到其中有个叫PCbuild的文件夹,这就是VS工程,用文本编辑器打开PCbuild\readme.txt文件,就可以看到它可以使用什么版本的Visual Studio来编译,所以这里不局限于这个版本的源代码,只要安装了支持的对应Visual Studio版本就可以
下载安装hg,为了安装第三方支持的库
然后运行PCbuild\get_externals.bat文件下载第三方支持,下载完在externals文件夹中会出现如下的文件夹,我这里已经安装过了,所以会一闪而过,这里下载取决于网络,很大情况下下不下来,要么多运行几次PCbuild\get_externals.bat,要么自己去谷歌找对应版本文件下载(折腾吧)
如果你也使用Python 3.6.2这个版本的话,也可以直接下载笔者下载好的文件,解压到externals文件夹就可以了,而不用通过上面的方法来下载
然后使用Visual Studio 2015打开PCbuild\pcbuild.sln工程文件
右键Solution选择最后一项Properties进行编辑,选择Configuration Properties>Configuration,将其中所有勾全去掉,只保留python、python3dll、pythoncore三项的勾
所有配置都已经完成,此时来修改源代码,找到pythoncore>Objects>longobject.c打开,修改代码第13,16行
然后右键Solution选择Build Solution,成功编译会在PCbuild\amd64文件夹中找到python.exe,运行就是图一中的效果
领取专属 10元无门槛券
私享最新 技术干货