通常,我们使用的绝大多数Python解析器,就是CPython的,它是用C语言实现的Python解析器,为我们提供了一个编写可扩展及高性能应用程序的平台。这里主要是记录下构建自己的Python解析器的过程,为后续深入了解源码做一些准备。
源码下载
git clone --branch 3.9 https://github.com/python/cpython
下载后目录结构如下所示:
接下来使用VSCode来打开这个cpython的文件夹,为了方便管理项目的各个任务,这里新建一个文件:.vscode/tasks.json:
{
"version": "2.0.0",
"tasks": [
{
"label": "build",
"type": "shell",
"group": {
"kind": "build",
"isDefault": true
},
"osx": {
"command": "make -j2 -s"
}
}
]
}
然后就可以看到任务了【需要安装插件:spmeesseman.vscode-taskexplorer】:
另外,在构建前还需要执行命令brew install openssl xz zlib gdbm sqlite
来安装一些前置包。
安装了包后,如果想已安装的包的目录,可以执行命令brew --prefix [包名]
来查看。
生成makefile
执行命令[CPPFLAGS="-I$(brew --prefix zlib)/include" LDFLAGS="-L$(brew --prefix zlib)/lib" ./configure --with-openssl=$(brew --prefix openssl) --with-pydebug]来生成makefile。
构建Python解析器
执行命令make -j2 -s
来生成python解析器。
可以发现,生成的文件是python.exe,这是为了避免在开发运行时调用了系统默认的python,在make install或make altinstall时不会有.exe的后缀。
另外可以发现,源码这里有很多构建目标:
这里先不深究,反正估计也会第二天忘记😂,想用到啥功能再逐个探究了。可以进入REPL看看:
Windows平台下的调试构建
在源码目录下的PCbuild文件夹可以看到有这个文件:
打开看看。不同版本的IDE,需要变更一下SDK,选择自己电脑的即可:
接下来到【生成】-【配置管理器】确认下配置:
然后点击【生成】-【生成解决方案】即可开始构建:
出现了这个报错,缺少了一些外部依赖,可以执行一下PCbuild文件夹下面的get_externals.bat脚本来安装一下:
然后重新生成解决方案即可:
为了方便后面调试,可以如下配置:
【工具】-【python】-【python环境】
添加python环境:
添加后,点击打开交互窗口看看:
后续在visual studio中,对应源码设定断点,就可以快速打开调试模式了。