作爲一個Python愛好者,我主要使用Python寫一些小工具方便本身和同事工做。如何讓我寫的小工具簡單的發佈給別人使用就成了一個讓人頭痛的問題,由於你們都知道,Python腳本要打包成一個可執行程序是比較麻煩且有不少制約的。我最早嘗試了PyInstaller,可是用它打包後獲得的程序在第一次運行時,哪怕是一個很是簡單的腳本,始終也要等上好幾秒鐘纔會出現程序界面,這讓我實在沒法接受。我也嘗試過cxfreeze,可是他不支持打包爲單文件,且打包後的文件體積也是異常的大!最終我決定在沒有轉到Python3以前主要使用Py2exe打包腳本。工具
使用Py2exe打包腳本爲單文件的方法這裏就不介紹了。我使用的是Python2.5 + Py2exe0.69,當我興高采烈的把這個程序拷貝給個人同事使用時,卻發現同事的XP電腦沒法使用這個程序!查看生成的錯誤日誌顯示爲:日誌
ImportError: MemoryLoadLibrary failed loading wx\_core_.pyd資源
這是由於XP電腦沒有安裝VC++2005的運行庫形成的。若是使用更高版本的Python,則缺乏更高版本的VC++運行庫。打包
爲此,我每次發佈工具,只好將MSVCR71.DLL,MSVCP71.DLL一同拷貝給別人使用,有些時候還須要拷貝一些運行須要的附加資源,這讓我感受一個小工具不「小」了。直到我找到了Enigma Virtual Box這個軟件虛擬化工具,他支持將多個附加文件和主執行程序打包爲一個文件,且在運行後不會在硬盤內生成任何其餘文件。Enigma Virtual Box的最新版本爲4.3,這個軟件更新的很快,建議你們使用最新版本,我以前出現了兩次合併後沒法運行的問題,經過升級新版本就解決了。軟件截圖以下:軟件
只須要指定一個主程序和附加的文件,再指定打包後新程序的存放位置,就能夠進行打包了。默認狀況下添加的附加文件的虛擬路徑爲主程序所在的路徑。也支持設定附件到指定的虛擬路徑。此外軟件還支持虛擬註冊表鍵值,支持將附件真正釋放到磁盤。程序
上圖可見我將MSVCR71.DLL,MSVCP71.DLL以及一個Shell腳本和Py2exe打包後獲得的單文件main.exe封包爲一個新文件。這樣我發佈的小工具就很方便別人使用了。固然,若是你不使用Py2exe,而是使用cxfreeze,也能夠用Enigma Virtual Box將生成的許多文件打包爲一個單文件。方法