手把手教你將pyqt程序打包成exe(1)

手把手教你將pyqt程序打包exe



0x00 環境說明

  • window
  • PyQt 5.13.1
  • python 3.7

ps: PyQt 5.13.1 以下的請更新,否則打包後可能會出現缺少PyQt的dll等問題…

更新包(模塊)的命令:
更新到指定版本:

pip install PyQt5==5.13.1

更新到最新版本:

pip install --upgrade PyQt5

在更新PyQt5後,可能出現與PyQt其他相關包不兼容的問題(在cmd中更新完PyQt5後,如果出現了其他包不兼容,它會提示[incompatible]),此時需要把不兼容的包也更新一下。
下方是我的一些包的的版本作爲版本更新的參考。

在這裏插入圖片描述
Tip:
對於多個py文件以及帶有關聯資源的要打包成exe,我個人覺得項目文件結構也很重要
下面我將用兩個示例來演示。

0x01示例1(沒有其他外部資源文件)

項目文件結構和運行效果如下圖所示:
建議把要打包的項目複製一份出來打包
(可以把用不上的文件刪除)
項目文件結構越簡單,打包越不容易出錯~
在這裏插入圖片描述
找到項目文件夾,並整理一下。

按住shift 並單擊鼠標右鍵,即可在此處打開cmd
在這裏插入圖片描述

1. 單文件打包

單文件打包會將整個項目和相關依賴都打包進一個exe,
此時一般只需要發送exe文件給別人即可正常運行。
它的缺點是:啓動相對另一種打包方式更緩慢
輸入命令:

 pyinstaller -F -w -i .\windowIco1.ico .\imageBrowser.py

參數解釋:
-F :單文件打包
-w:不要console(取消類似於cmd的黑框框)
-i:後面接圖標地址(圖標一定要是標準的ico格式)
我用的是:.\windowIco1.ico
最後面接的是要打包的程序:.\imageBrowser.py

運行命令成功後:

會生成三個文件夾和一個.spec文件,前兩個文件夾是沒用的(建議刪除~)。exe在dist文件夾中。
在這裏插入圖片描述
雙擊運行exe:
可以看的成功打包了~
在這裏插入圖片描述
如果雙擊後出現閃退(太快看不清楚錯誤原因),說明打包出現了問題。
爲了知道具體原因:
需要在cmd中運行這個exe。

在這裏插入圖片描述
如果運行不成功,此時就會顯示錯誤原因。
錯誤原因很多,也不是固定的,根據提示去對症下藥,更改好再次打包即可。

.spec文件簡單說明:
它是打包的配置腳本,在輸入打包命令後生成,在構建exe時會運行這個配置腳本。所以如果一次打包後,我們對結果不滿意,可以修改.spec文件,然後輸入:pyinstaller xxxx.spec 重新構建exe。
比如我們一開始忘記加ico了,或者需要更換ico,可以修改.spec中icon的文件路徑…(後面再詳細講.spec裏的具體配置)
在這裏插入圖片描述

2. 單文件夾打包

只需要將dist下的文件夾生成壓縮包發給別人,別人解壓,找到運行的exe即可運行程序。
相比於單文件打包命令,
只是將單文件打包命令中的-F換成-D

 pyinstaller -D -w -i .\windowIco1.ico .\imageBrowser.py

在這裏插入圖片描述
同樣生成了三個文件夾和一個.spec文件,也是隻有dist文件夾裏的東西有用。
不同的是:在dist文件夾裏生成了一個文件夾。

在這裏插入圖片描述
這種類型的打包,我們平時也十分常見。
它啓動速度相對比較快,但是不方便我們查找。而且需要我們格外小心,不要誤刪或者移動了裏面的文件。
在這裏插入圖片描述
雙擊運行,也沒有問題:
在這裏插入圖片描述
出於篇幅原因,將示例2和.spec文件詳細介紹放在下一篇。

下一篇見~

----》手把手教你將pyqt程序打包成exe(2)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章