編譯python(cpython)的原始碼及其用途

趙青青發表於2022-04-05

獲取python的原始碼

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


編譯python原始碼

我是在windows上編譯python2.7的原始碼,可能還需要安裝windows sdk,我的系統上已安裝。

使用vs2012及以上版本開啟PCbuild目錄下的pcbuild.sln,如果提示升級解決方案,請不要升級

選中python這個project,設定python為啟動專案

選中解決方案(pcbuild) - 右鍵 - 配置管理器,在生成這列只勾選python和pythoncore

image-20220405145512368

選中python 和pythoncore - 右鍵 - 平臺工具集(platform toolset)設定為2012,因為我們沒有安裝它預設的2008,否則會生成失敗報未安裝vs2008的工具集

image-20220405150206847

點選生成,在PCbuild目錄下會生成python.exe,如果是debug則會生成python_d.exe


使用編譯出來的python

當把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.

image-20220405151117051


相關文章