描述:
自己寫的小程序發(fā)給沒有安裝python的小伙伴電腦使用橄妆,就需要打包成exe可執(zhí)行文件望薄。pyinstaller 安裝命令很簡單疟游,pyinstaller -F 就OK了,但是痕支,打包出來你會發(fā)現(xiàn)文件超大颁虐,因為它會把當(dāng)前環(huán)境所有庫都打進(jìn)去。所以卧须,我們要借助虛擬環(huán)境另绩,在虛擬環(huán)境中安裝我們需要的包第三方庫,然后在虛擬環(huán)境中打包花嘶。
安裝步驟:
一笋籽、建立虛擬環(huán)境
使用anaconda建虛擬環(huán)境
創(chuàng)建不同的python版本,直接寫出版本號就好了椭员,還可以同時安裝想要的庫车海。運行cmd進(jìn)入命令控制臺
$ conda create -n pack3.9.7 python=3.9.7
二、激活虛擬環(huán)境
$ activate pack3.9.7
三隘击、安裝依賴庫
在虛擬環(huán)境下安裝pyinstaller和自己的程序依賴的第三方庫和查看已經(jīng)安裝的庫
pip install pyinstaller
pip install pyQt5
四侍芝、打包
進(jìn)入程序所在的目錄,我的程序在 C:\Users\Administrator\Desktop\composite 這個路徑
pyinstaller選項參數(shù)
選項 | 描述 |
---|---|
-F | 生成結(jié)果是一個exe程序埋同,所有第三方依賴庫和其他資源都被打包進(jìn)該exe程序中 |
-D | 生成結(jié)果是一個包含exe程序的目錄州叠,所有第三方依賴庫和其他資源和exe程序位于同一目錄下 |
-i | 為生成的程序指定一個icon圖標(biāo) |
-c | 顯示命令行窗口(打開exe會有黑色命令行窗口,打包默認(rèn)為打開) |
-w | 不顯示命令行窗口(如果是發(fā)給別人凶赁,建議用該選項) |
-n | 指定生成的.exe和.spec文件名 |
–distpath | 指定打包后的程序存放目錄咧栗,默認(rèn)存放在當(dāng)前目錄下的dist目錄 |
–workpath | 為輸出的所有臨時文件指定存放目錄 |
-h | 顯示幫助信息 |
-v | 顯示版本號 |
例如我要把之前寫好的程序打包:
pyinstaller -D -w -i logo.ico --distpath c:\Users\Administrator\Desktop\setup Ui_Event.py
打包后:
將這個Ui_Event( 這個是我程序的文件名,你也可以用-n 選項參數(shù)修改成你想取的名稱) 文件夾發(fā)給小伙伴就可以直接打開使用了虱肄。
問題總結(jié):
一致板、打包文件太大
前面說的要建虛擬環(huán)境,在虛擬環(huán)境下打包
二咏窿、打包后exe打開巨慢
不建議用-F 選項參數(shù)打包可岂,它會把所有依賴包都打到exe文件中,雖然看上去很簡潔翰灾,但是它打開時缕粹,巨慢。使用-D打包纸淮,雖然所有第三方依賴庫和其他資源和exe程序位于同一目錄下平斩,但是它打開時就跟本地代碼運行一樣的。
三咽块、打包后绘面,exe打開所有的圖片都沒顯示
-
建qrc 文件,把圖片的路徑寫在該文件中,我創(chuàng)建了pic.qrc文件
image.png
==注意:圖片需要用png圖片揭璃,用jpg圖片仍然會顯示不了==
- 使用命令將qrc文件編譯成py
pyrcc5 pic.qrc -o pic.py - 圖片加入程序中晚凿,要使用 : (冒號)路徑,如:
self.setWindowIcon(QIcon(':/pic/aehvi-0m7h6-001.ico'))
重新打包瘦馍,exe中就可以顯示圖片了歼秽。