程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

windows 編譯python

編輯:Python

引流

        python編譯|編譯py|xp python|python庫|python ssl|python.exe|python|python socket

寫在前面

在實際開發中我們往往需要將python編譯為我們程序的組件或者支持程序,所以我們需要自己編譯一個python解釋器。

編譯python

        下載py源代碼

                py是一個開源的解釋語言,我們可以很容易下載到它的源代碼:

                       python官網:http://Python源碼下載

        如果你需要編譯的py可以在xp上運行,最新的可支持xp的python版本為 Python 3.4.4。

        解壓源代碼並打開

         找到解決方案位置

        打開解決方案

         此處可以設置生成平台,例如需要兼容xp。可以設置為141xp

測試編譯文件

        將生成的python_d.exe、python27_d.dll 文件放到一台無py環境的電腦,簡單執行python -V測試

處理Python 標准庫

        執行簡單py代碼測試

                編寫pytest.py

print("hello word")

                執行py文件,並未正常輸出

         添加py標准庫

                上圖中並未執行成功,因為目前我們擁有了py解釋器,但是py的標准庫文件並不存在,因此庫函數調用失敗。

                在源代碼目錄找到Lib目錄,將其復制到實驗機器的 python2.7.exe目錄下

                 復制到目標位置之後再次執行py程序,結果正確。

編譯和系統相關的py庫

                接上文,於是我們開開心心地執行一些py程序

                再次出現錯誤,仔細查看Lib文件夾中也未發現_socket等文件。

                回到py源碼,查看是否有類似的字眼

                恍然大悟,py除開封裝的邏輯等庫。底層的通信等庫一定是和操作系統api相關的。

                編譯該庫生成對應的庫文件,後綴為pyd。將其放到DLLs目錄。

                 之前缺少的庫現在沒有報錯了。編譯所有的庫放到DLLs文件夾即可。

                該處編譯ssl後將pyd庫文件放入DLLs,嘗試再次運行。

Python 涉及文件的區別

格式描述.pypython 源文件.pycpyc是源文件編譯後的目標文件.pyo源文件優化編譯後的文件.pyd是其他語言寫的python庫

        相對於py文件來說,編譯成pyc和pyo本質上和py沒有太大區別,只是對於這個模塊的加載速度提高了,並沒有提高代碼的執行速度,通常情況下不用主動去編譯pyc文件,文檔上說只要調用了import model那麼model.py就會先編譯成pyc然後加載。

編譯_ssl注意事項

        編譯openssl需要注意

        可用的教程:windows 編譯openssl

        openssl源碼:oepnssl源碼下載

                避坑點:

                                1、Perl 自己百度,到官網下一個win安裝版的裝上設置環境變量就行。

                                2、編譯完成後_ssl依賴庫設置的是ssleay.lib,項目自身好像是crypt.lib。

 


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved