獲取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
選中python 和pythoncore - 右鍵 - 平臺工具集(platform toolset)設定為2012,因為我們沒有安裝它預設的2008,否則會生成失敗報未安裝vs2008的工具集
點選生成,在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.