當你希望將你所寫好的python程式拿到沒有安裝python環境的機器跑時,你就會想要將你的python程式轉成一個可獨立執行的執行檔。目前比較常見用來將python做成執行檔的有兩個工具,一個是py2exe,另一個則是PyInstaller。然而在我之前的使用經驗中,py2exe雖然可以將python程式碼轉換成一個可執行檔,但卻會夾帶許多的dll檔,使用起來比較不方便。而PyInstaller則是可以將所有需要用到的module通通包進最後的執行檔中,而且具有跨平台的優點,讓你寫好的python程式碼,可以輕易的在不同的平台執行。
PyInstaller可以到http://www.pyinstaller.org/來下載。PyInstaller並不是python的module,因此下載下來解壓縮後,將它放置在你想要的位置就可以使用了。
第一次使用時,必須先對PyInstaller進行一些環境變數的設定。在IPython下,你只要將目錄移至PyInstaller的目錄下後執行:
run Configure.py
來根據你的環境設定一些變數後就可以建立spec檔案
run Makespec.py --onefile yourprogram.py
執行完成後,就可以在PyInstaller目錄下,看到PyInstaller建立的一個yourprogram目錄,裡面放有一個yourprogram.spec的檔案,這個檔案就是用來告訴PyInstaller關於轉換yourprogram.py成執行檔的一些設定。上面的參數--onefile就是告訴PyInstaller要將程式碼轉成單獨一個的執行檔。接著,就可以開始將你的程式轉成可單獨執行的執行檔了:
run Build.py yourprogram/yourprogram.spec
在轉換完成後,你可以在yourprogram目錄下看到兩個新建的目錄dist與build,在dist目錄下,便是轉換成功的執行檔了。
下面列出幾個在建立spec檔案時常用到的參數:
--onefile: 將所有需要用到的module或函式庫包進單一檔案中
--windowed: window模式(預設是console模式,執行程式會連帶產生一個console視窗)
--tk: 包含TCL/TK如果你的python程式是以tk撰寫GUI時,就必須要將tk相關的module也包含在內
其他更多的參數可參閱PyInstaller的說明網頁 http://www.pyinstaller.org/export/latest/tags/1.5.1/doc/Manual.html?format=raw