编译python(cpython)的源码及其用途
阅读原文时间:2022年04月05日阅读:1

3.x及最新版本的源码:https://github.com/python/cpython

python2.7分支的源码:https://github.com/python/cpython/tree/v2.7.18

python官网也提供源码下载:https://www.python.org/downloads/source

ps. 对比过从官网下载的源码和github内容是一样的

python的源码是由C语言编写的,所以叫cpython

我是在windows上编译python2.7的源码,可能还需要安装windows sdk,我的系统上已安装。

使用vs2012及以上版本打开PCbuild目录下的pcbuild.sln,如果提示升级解决方案,请不要升级

选中python这个project,设置python为启动项目

选中解决方案(pcbuild) - 右键 - 配置管理器,在生成这列只勾选python和pythoncore

选中python 和pythoncore - 右键 - 平台工具集(platform toolset)设置为2012,因为我们没有安装它默认的2008,否则会生成失败报未安装vs2008的工具集

点击生成,在PCbuild目录下会生成python.exe,如果是debug则会生成python_d.exe

当把python作为游戏的脚本语言,为保护游戏不被反编译我们需要对python脚本进行加密,及需要对cpython源码做少量的修改让它更适合游戏领域。

我们把编译出来的python.exe单独拷贝出来,就可以用它来执行python脚本了,如下所示

PS E:\mypython> .\python.exe hello.py
hello
PS E:\mypython> .\python.exe
Python 2.7.18 (tags/2.7-dirty:8d21aa21f2, Apr  5 2022, 14:59:21) [MSC v.1700 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.