python編譯|編譯py|xp python|python庫|python ssl|python.exe|python|python socket
在實際開發中我們往往需要將python編譯為我們程序的組件或者支持程序,所以我們需要自己編譯一個python解釋器。
py是一個開源的解釋語言,我們可以很容易下載到它的源代碼:
python官網:http://Python源碼下載
如果你需要編譯的py可以在xp上運行,最新的可支持xp的python版本為 Python 3.4.4。
此處可以設置生成平台,例如需要兼容xp。可以設置為141xp
將生成的python_d.exe、python27_d.dll 文件放到一台無py環境的電腦,簡單執行python -V測試
編寫pytest.py
print("hello word")
執行py文件,並未正常輸出
上圖中並未執行成功,因為目前我們擁有了py解釋器,但是py的標准庫文件並不存在,因此庫函數調用失敗。
在源代碼目錄找到Lib目錄,將其復制到實驗機器的 python2.7.exe目錄下
復制到目標位置之後再次執行py程序,結果正確。
接上文,於是我們開開心心地執行一些py程序
再次出現錯誤,仔細查看Lib文件夾中也未發現_socket等文件。
回到py源碼,查看是否有類似的字眼
恍然大悟,py除開封裝的邏輯等庫。底層的通信等庫一定是和操作系統api相關的。
編譯該庫生成對應的庫文件,後綴為pyd。將其放到DLLs目錄。
之前缺少的庫現在沒有報錯了。編譯所有的庫放到DLLs文件夾即可。
該處編譯ssl後將pyd庫文件放入DLLs,嘗試再次運行。
相對於py文件來說,編譯成pyc和pyo本質上和py沒有太大區別,只是對於這個模塊的加載速度提高了,並沒有提高代碼的執行速度,通常情況下不用主動去編譯pyc文件,文檔上說只要調用了import model那麼model.py就會先編譯成pyc然後加載。
編譯openssl需要注意
可用的教程:windows 編譯openssl
openssl源碼:oepnssl源碼下載
避坑點:
1、Perl 自己百度,到官網下一個win安裝版的裝上設置環境變量就行。
2、編譯完成後_ssl依賴庫設置的是ssleay.lib,項目自身好像是crypt.lib。