官方的源代碼 改了一些編譯選項 然后自己編譯了一下
貼一個鏈接 http://www.newsmth.net/nForum/article/Python/93004?s=93006
有本書《python源碼剖析》教你如何精簡代碼樹,方便分析python源代碼
首先安裝編譯器,vs2008express sp1版本。這個版本使用的msvcrt是9.0.30729.1,不是微軟下載站的最新版本。不過只有最后一個數(shù)字有區(qū)別。
1. 編譯openssl
首先要安裝activeperl。它似乎是用vc6編譯的,或者用mingw編譯的,并沒有安裝新的msvcrt。
解壓openssl后,進入目錄以后運行以下幾條命令:
perl Configure VC-WIN32 no-asm --prefix=c:/openssl
ms\do_ms.bat
nmake -f ms\ntdll.mak
nmake -f ms\ntdll.mak install
一般網(wǎng)上會介紹用匯編的命令,需要運行`ms\do_nasm.bat`雖然會加快速度,但是我覺得太麻煩了。
四個命令運行完,在c:\openssl下就可以找到openssl的文件了。
2. 編譯python。
python依賴于bzip2、sqlite3、openssl等幾個庫。bdb就不用說了,反正也沒有用。openssl在前面已經(jīng)編譯好了。
把python解壓到c:\goldfish\python\python-2.6.7,把sqlite3解壓到sqlite-3.5.9,把bzip2解壓到bzip2-1.0.5,目錄名里面的版本號都不是包真正的版本號,只是因為python依賴于特定的版本(只有目錄名,不是真的非那個版本不用)。
打開python目錄里面的`PCBuild\pcbuild.sln`,這是一個做好的visual studio項目文件。打開的時候可能會提示一個express版本不支持solution items之類的警告,似乎沒有關(guān)系。
在項目管理器里面刪掉不需要的幾個工程。比如:`_tkinter, _bsddb, _ctypes_test, _msi, _testcapi, w9xpopen, winsound`。
還需要修改`_ssl`和`hashlib`兩個工程的屬性。設(shè)置包含`c:\openssl\include`和`c:\openssl\lib`,分別在“c/c++屬性”和“鏈接->輸入”兩個屬性頁里面。還要禁止預(yù)生成步驟。
把整個解決方案活動的配置改成“Release”,然后生成解決方案。
如果一切沒有錯誤,在pcbuild目錄下就可以找到一堆.pyd文件,一堆.lib文件和python26.dll, python.exe, pythonw.exe,把它們復(fù)制到該去的地方。然后還要復(fù)制Lib目錄里面的.py文件和include目錄。這樣的話,一個精簡的python就搞出來了。
到DLLs刪除ls說的幾個用不著的pyd,另外到Lib刪除對應(yīng)的py,以及幾乎不會用到的2to3, compiler, test等。
一個相對完整的單文件版py2.7大概10m左右
--
記得2.5的時候,比JRE小很多,是我引為py的一個優(yōu)點,可是最近下載2.7,已經(jīng)超15MB了,而JRE 6卻依然保持身材(捆綁插件不算)。這意味著啥?能減肥不?
按我貼的編譯方法搞出來,只有7M.壓縮后3.5M
記錯了:是一個單文件的python + webpy + lxml + jinja2 + sqlalchemy做的一個簡單的web是 10M左右 單文件的python是6M
聯(lián)系客服