引言
本文是学习python源代码的入门章,参考的书本主要是2008年的《python源码剖析》,py2 系列在之后的版本变化不大,节约入门成本考虑还是继续用2.5.2。
下面主要描述如何在Win 10 x64, visual studio 2015 community 社区版上编译书中2008年的python 2.5.2 。
预先要求
- 安装vs2015 ,尽管vs2017已经在半个月前发布,不过编译器这些东西能用就行。
- 下载python source code,一般是个tar包;
流程
- 解压目录,并进入
PCbuild8
目录,用vs2015打开pcbuild.sln
解决方案文件;之后要求升级操作,确认即可,完了会弹出一个升级报告的html文件,一般没有错误; - 参考书本上设置的资料和通用流程
右键解决方案
PCBuild(20个项目)
⇒ 属性
a. 通用属性
单启动项目 ⇒ 选择 python
b. 配置属性
左上角的【配置】⇒ Debug(Release 可能会报错)
项目上下文 ⇒ 仅选中 python/pythoncore
(4)首先编译 make_buildinfo 和 make_versioninfo
分别右键make_buildinfo/make_versioninfo
⇒ 仅用于项目 ⇒ 仅重新生成
解决问题
对这样的最小系统,立即生成解决方案会报错,有两方面原因:
timezone
这个宏不再被vs2015支持,所有出现的地方都要替换为_timezone
,剩下的几个关于时间的编译错误也是如此加个下划线【_】就好了。错误都集中在 pythoncore下的timemodule里 line:687附近。项目的配置问题:主要是compiler编译出的中间文件名和linker使用的文件名不匹配,参考之前的错误报告, 需要在配置里设置
pythoncore
项目的输出文件名为$(PyDllName)_d
。
设置完成后就可以顺利编译出python 最小系统了:
里面包括的就是今天的时间。如果还有问题,那就仔细检查错误报告对应的位置,修好他。
大功告成~开心o( ̄▽ ̄)ブ