1.首先安裝pyinstaller。
1 pip install pyinstaller
2.PyQT5制作程序中使用到的ico等一系列圖標文件,要先經過.qrc文件轉成.py文件后,才可跟隨打包文件一同打包。
首先創建一個.qrc文件,將圖片文件全部寫進去,例如:
1 <RCC> 2 <qresource> 3 <file>111.ico</file> 4 <file>222.png</file> 5 <file>333.gif</file> 6 <file>444.jpg</file> 7 </qresource> 8 </RCC>
然后,使用pyrcc5命令,將.qrc文件轉換成.py文件。
1 pyrcc5 resource.qrc -o resource_rc.py
轉換后的.py文件如下:
3.需要在想要打包的***.py文件中將圖片的路徑寫成這樣:
1 palette1 = QPalette() 2 pix1 = QPixmap(":/111.jpg") 3 palette1.setBrush(QPalette.Background, QBrush(pix1)) 4 demo.setPalette(palette1) 5 palette2 = QPalette() 6 pix2 = QPixmap(":/222.jpg")
4.在將要打包的***.py文件中將轉后的.py文件import進去。
1 import resource_rc.py
5.1 單文件打包
單文件打包會將整個項目和相關依賴都打包進一個exe,此時一般只需要發送exe文件給別人即可正常運行。它的缺點是:啟動相對另一種打包方式更緩慢。
輸入命令:
1 pyinstaller -w -F -i '.\Plot.ico' main.py
參數解釋:
-F :單文件打包
-w:不要console(取消類似於cmd的黑框框)
-i:后面接圖標地址(圖標一定要是標准的ico格式)
最后面接的是要打包的程序:main.py
運行命令成功后:
會生成三個文件夾和一個.spec文件,.exe在dist文件夾中。
5.2 單文件夾打包
只需要將dist下的文件夾生成壓縮包發給別人,別人解壓,找到運行的exe即可運行程序。 相比於單文件打包命令, 只需將命令中的-F
換成-D即可。
1 pyinstaller -w -D -i '.\Plot.ico' main.py
打包完成后,同樣生成了三個文件夾和一個.spec文件。 不同的是:在dist文件夾里生成了一個文件夾,而.exe就在該文件夾內。這種類型的打包啟動速度相對比較快,但是不方便我們查找。而且需要我們格外小心,不要誤刪或者移動了里面的文件。
PS:加 -F 雖然是生成了單個exe可執行文件,看上去很清爽,但是這個命令它把所有的環境都整合在了一起,如果我們的程序比較大的話,啟動時就會非常慢(如果你的電腦性能一般的話,加載時間會更長)。因為它加載的數據都是靜態加載的,需要去封裝的包里一個個的去查找,所以速度變慢了。因此去掉 -F 之后,我們的啟動速度流暢無比,體驗效果也大大提升。去掉它之后,生成的dist文件中你程序中要用到的環境都會被放在dist中,這個時候所用到的環境就變成了動態加載的,速度就跟你用代碼啟動程序的速度是一樣的。