Windows下面製作綠色版的Pytho

首先在某個地方安裝安裝版的Python,比如虛擬機里,我裝的是「python-2.7.1.msi」,然後把安裝目錄整個拷過來備用。之所以安裝版無法做成綠色版,是因為其中的三個主要文件「python.exe」、「pythonw.exe」和「python27.dll(安裝在system32目錄中)」都依賴於「msvcr90.dll」這個非常噁心的東西。我們需要把它綠色化。 下載並解壓縮源程式碼包,我下載的是「Python-2.7.1.tar.bz2」,然後進入「PCbuild」目錄,用Visual Studio 2008打開「pcbuild.sln」文件,注意,「PC」目錄下面還有一些早期版本Visual Studio的工程文件,我試過VC6的,根本無法編譯,其它沒試,不過既然官方都用2008的,那我們也跟著用就是了。 我的Visual Studio 2008裝了SP1,編譯其中的「python」、「pythoncore」和「pythonw」三個項目得到「python.exe」、「pythonw.exe」和「python27.dll」三個文件,替換備用目錄中同名的文件,然後把Visual Studio 2008安裝目錄中的「VCredistx86Microsoft.VC90.CRT」目錄中的「msvcr90.dll」和「Microsoft.VC90.CRT.manifest」也拷到備用目錄中,再把備用目錄整個拷到一個乾淨的環境中。執行python.exe,卻出錯了:無法啟動!用Depends工具觀察,報依賴錯誤! 回過頭檢查編譯生成的manifest文件才發現,原來雖然Visual Studio 2008裝了SP1,按理CRT已經升級到了9.0.30729.4148版,但是manifest里鏈接的還是9.0.21022.8版!所以只能將「python」、「pythoncore」和「pythonw」三個項目的屬性作如下設置:

然後重新編譯後,manifest文件就獨立出來而不是嵌在程式中了,最後得到「python.exe」、「pythonw.exe」、「python27.dll」和相應的manifest文件「python.exe.manifest」、「pythonw.exe.manifest」、「python27.dll.manifest」,整個拷到備用目錄中替換原來的文件。 用文本編輯器打開「python.exe.manifest」、「pythonw.exe.manifest」、「python27.dll.manifest」和「Microsoft.VC90.CRT.manifest」四個manifest文件,把前三個文件中的「assemblyIdentity」中的「version」和「publicKeyToken」修改成和「Microsoft.VC90.CRT.manifest」保持一致 OK!再次執行python.exe,一切正常了! 最後在備用目錄中新建一個批處理文件「console.bat」,內容為: @echo off cd /d %~dp0 set PATH=%CD%;%PATH% start cmd.exe 以後直接執行該批處理文件就能得到一個設置好環境變數的Shell了。