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

獲取python的源碼

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

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

python官網也提供源碼下載://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

Tags: