我經常用python寫些腳本什么的,有時候腳本寫完以后,每次運行都得在IDE打開在運行,很麻煩,所以經常將python編譯成exe.SO...有了一點經驗,在這和大家分享一下。
python 打包成exe 主要有兩種,一種是py2exe,另一種便是pyInstaller,之前我是用py2exe的,但是我后來發現py2exe存在問題:1,打包好的 exe只能在相同的系統下運行,比如你在XP系統用py2exe打包好的exe只能在XP上運行,在win7上肯定有問題,而且也是存在在別的XP機子上也可能不能運行,因為一些別的機子可能會缺少dll文件什么的,作者我當時之所以拋棄py2exe 也是因為這個原因;2,打包的文件也需要打包同exe下的dll,和一些庫的壓縮包,不然exe根本跑不起來
所以作者強烈建議大家在python打包的話使用pyInstaller,在這我主要同大家分享pyInstaller的打包方法.
話不多說,開始.....
pyInstaller是一款用於將pyhon程序打包成exe文件的工具,pyInstaller不是一個python的包, 只需要把pyInstaller的文件下載下來放到任意為止都可以,也就是說pyInstaller相當於獨立出來專門干打包python的工具,這貨是工具不是庫,也不是包...
1.下載安裝pyinstaller,下載網址:http://www.pyinstaller.org/去下載,然后解壓到任意目錄.(注意:在pyinstaller2.0之前的版本要是移動這個文件夾的話,需要改一些配置,不然pyinstaller會因為你的移動不能使用.這個和后面的配置環境有關.pyinstaller2.0的版本就沒有限制.)
2.編譯配置環境(以解壓到F:盤為例子)
①, pyinstaller-2.0的方法:
打開cmd cd進入解壓后的目錄下的sorce下,即:cd F:\pyinstaller-2.0\source
運行 python ./waf configure build install
*(可能需要安裝pywin32.下載並安裝即可,重新運行命令即可)
②, pyinstaller-1.5
打開cmd cd進入pyinstaller解壓目錄,cd F:\pyinstaller-1.5
運行 python Configure.py
*(可能需要安裝pywin32.下載並安裝即可,重新運行命令即可)
結果提示保存在config.dat文件中。其中config.dat文件存放在pyinstaller的根目錄。
3. 將自己寫的py程序打包exe
①, pyinstaller-2.0的方法:
將自己寫的py文件(HelloWorld.py)拷貝到pyinstaller解壓目錄下,
打開cmd cd進入解壓后的目錄下,即:cd F:\pyinstaller-2.0\
運行命令 python pyinstaller.py [opts] yourprogram.py
在此處則是運行:python pyinstaller.py [opts] HelloWorld.py
在目錄下會生成一個helloworld的文件夾,里面存放 HelloWorld.spec文件,;兩個文件夾(dist,buildi),可以運行的exe則放在/dist/yourprogram下
②, pyinstaller-1.5
將自己寫的py文件(HelloWorld.py)拷貝到pyinstaller解壓目錄下,
打開cmd cd進入解壓后的目錄下,即:cd F:\pyinstaller-1.5\
pyinstaller-1.5和 pyinstaller-2.0 的區別來了。
在 pyinstaller-1.5 中你先需要生成spec文件,然后通過spec文件在生成exe文件,而 pyinstaller-2.0 在執行命令(請看上面)后會同時吧exe和spec文件都生成出來了
所以在 pyinstaller-1.5 你得先生成spec文件:
python Makespec.py [opts] yourprogram.py
運行命令: python Makespec.py [opts] HelloWorld.py
此時在此目錄下生成的 HelloWorld文件夾,文件夾下有一個 HelloWorld.spec文件,將文件在拷貝到目錄(F:\pyinstaller-1.5\)下
運行命令: python Build.py HelloWorld.spec
4.你會發現按照上面的方法在/yourprogram/dist/yourprogram下除了需要的exe文件,也存在很多dll文件,然后你會開始抱怨作者我坑爹了吧....
哈哈,如果你這么發現了,說明,你已經完成用最基礎的pyinstaller打包了,關於如何pyinstaller請往下看:
不管是pyinstaller-1.5還是pyinstaller-2.0,要想打包成一個文件,或者將文件的圖標修改等等操作,這些都與你在運行命令時有關系,還記得命令是什么嗎?
pyinstaller-2.0 是:
python pyinstaller.py [opts] yourprogram.py
pyinstaller-1.5 是:
python Makespec.py [opts] yourprogram.py
那些打包成一個文件,或者將文件的圖標修改等等操作都和這個 [opts] 有關系.
下面舉些例子(客官一看便知,以 pyinstaller-2.0為例子,1.5通用):
①, 打包成一個文件:
python pyinstaller.py --onefile yourprogram.py
②,修改exe的圖標(D:\BabyWandH\src\faviconw.ico為圖標的存放路徑):
python pyinstaller.py --onefile --icon=D:\BabyWandH\src\faviconw.ico yourprogram.py
[opts]的一些說明(具體可以看pyinstaller官網http://www.pyinstaller.org/expor ... talling-pyinstaller):