Python是解釋性語(yǔ)言厦坛,一般在編碼和運(yùn)行的時(shí)候也都是直接在Python開(kāi)發(fā)環(huán)境下運(yùn)行,使用Pyinstaller這個(gè)類(lèi)庫(kù)來(lái)打包Windows系統(tǒng)下的可執(zhí)行程序椭员,需要用到如下的一些參數(shù):
ü-F表示生成單個(gè)可執(zhí)行文件
ü-w表示去掉控制臺(tái)窗口,這在GUI界面時(shí)非常有用。不過(guò)如果是命令行程序的話(huà)那就把這個(gè)選項(xiàng)刪除吧撩幽!
ü-p表示你自己自定義需要加載的類(lèi)路徑,一般情況下用不到
ü-i表示可執(zhí)行文件的圖標(biāo)
說(shuō)起來(lái)箩艺,這個(gè)Python程序除了可以打包成Windows下的可執(zhí)行程序外窜醉,也可以打包成蘋(píng)果電腦上的可執(zhí)行程序(使用py2app類(lèi)庫(kù)),或者在外面加個(gè)殼打包成手機(jī)APP(各種手機(jī)操作系統(tǒng)平臺(tái)的艺谆,例如使用Kivy框架開(kāi)發(fā)Andriod手機(jī)應(yīng)用)榨惰,Python跨平臺(tái)的這個(gè)屬性很棒,一次開(kāi)發(fā)静汤,打包成不同操作平臺(tái)上運(yùn)行的應(yīng)用軟件琅催,這是Python的優(yōu)點(diǎn)之一。
2常用的python打包工具有py2exe以及pyinstaller虫给。
py2exe操作起來(lái)沒(méi)有pyinstaller方便藤抡,需要提前編寫(xiě)一個(gè)setup.py文件,而且在多版本支持方面也沒(méi)有pyinstaller做的好抹估,個(gè)人傾向于選擇pyinstaller缠黍。
安裝
pyinstaller是一個(gè)python開(kāi)發(fā)的包,支持多種安裝方式药蜻,小編在這里推薦使用pip命令來(lái)安裝瓷式。因?yàn)閜yinstaller這個(gè)包依賴(lài)于pywin32替饿,使用pip方式來(lái)安裝可以在安裝過(guò)程中將這個(gè)包一并安裝好。
命令行安裝:pip install pyinstaller
編寫(xiě)python程序
使用pyinstaller打包
在命令行執(zhí)行pyinstaller命令即可自動(dòng)化打包
命令行打包:pyinstaller hello.py
如果程序有多個(gè)模塊文件贸典,那么pyinstaller命令只需要對(duì)程序入口文件打包即可视卢,pyinstaller會(huì)去找入口文件中所引用的依賴(lài)模塊
查看打包結(jié)果
不帶任何參數(shù)的命令執(zhí)行完后,會(huì)在當(dāng)前目錄下生成build目錄廊驼,dist目錄以及spec文件(如下圖)据过,并將程序打包成一個(gè)以程序文件名命名的目錄(包含可執(zhí)行文件及其他依賴(lài)文件),保存到dist目錄下
如果打包的程序沒(méi)有窗口界面蔬充,則生成的exe程序會(huì)以命令行窗口的形式運(yùn)行蝶俱,程序運(yùn)行完會(huì)自動(dòng)退出,所以在測(cè)試階段建議在命令行窗口中執(zhí)行exe程序饥漫,以便查看程序的打印信息榨呆。
常用參數(shù)說(shuō)明
-F將程序打包成一個(gè)單獨(dú)的exe文件而不是包含很多文件的目錄
-wpyinstaller生成的exe文件是從命令行開(kāi)始執(zhí)行的,對(duì)于GUI程序(如Tkinter開(kāi)發(fā)的桌面程序)庸队,加上-w參數(shù)后积蜻,exe程序執(zhí)行后就不會(huì)顯示命令行窗口
-i如果想為exe文件生成一個(gè)自定義圖標(biāo),可以使用-i參數(shù)彻消,后面跟上ico文件名
e.g. pyinstaller -i icon.ico hello.py
--add-data添加程序需要引用的外部文件
e.g. pyinstaller --add-data config;. hello.py
更多參數(shù)的使用方法可以閱讀詳細(xì)文檔
https://pyinstaller.readthedocs.io/en/v3.3.1/usage.html