1. 程式人生 > >PyQt5 Pyinstaller打包注意事項

PyQt5 Pyinstaller打包注意事項

Pyinstaller打包注意事項

  1. pyinstaller也是有版本的,所以對於一些庫的新版本是不支援的。
    requests的版本只支援到 2.10.0
  2. PyQt5的路徑需要自己指定,用 –paths引數(前面是兩條槓)。

控制檯打包和程式碼打包任選一種即可
控制檯打包最終的命令為下

pyinstaller -F -w --paths=C:\Python\Python35\Lib\site-packages\PyQt5\Qt\bin 
--paths=C:\Python\Python35\Lib\site-packages\PyQt5\Qt\plugins  master.py

需要注意的是這裡的pyinstaller的版本和打包是指定的PyQt5對應的python版本應該一致。
打包後,不管輸出什麼資訊,具體執行一下打包後的檔案是個好習慣,這個輸出的資訊有時候也不一定準

PyQt裡面如果有按鈕,每次點選按鈕的執行動作有開啟一個新程序,那麼整個程式會重複啟動一次,這算是PyQt打包後的一點小問題,我採用的解決辦法是將程序改成執行緒。

程式碼打包最終程式碼如下

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from PyInstaller.__main__ import run
# -F:打包成一個EXE檔案 
# -w:不帶console輸出控制檯,window窗體格式 
# --paths:依賴包路徑 
# --icon:圖示 
# --noupx:不用upx壓縮 
# --clean:清理掉臨時檔案

if
__name__ == '__main__': opts = ['-F', '-w', '--paths=C:\\Python\\Python35-win32\\Lib\\site-packages\\PyQt5\\Qt\\bin', '--paths=C:\\Python\\Python35-win32\\Lib\\site-packages\\PyQt5\\Qt\\plugins', '--paths=F:\\KwDownload\\x86', '--icon', 'rxx.ico', '--noupx', '--clean'
, 'master.py'] run(opts)

DOS輸出資訊如下

D:\WORKSPACE\Python\AProject\ItChat-work>pyinstaller -F -w --paths=C:\Python\Python35-win32\Lib\site-packages\PyQt5\Qt\bin --paths=C:\Python\Python35-win32\Lib\site-packages\PyQt5\Qt\plugins master.py  //-F:打包後只生成一個檔案 -w:執行時不帶DOS視窗
115 INFO: PyInstaller: 3.2.1  //pyinstaller版本
115 INFO: Python: 3.5.2     //Python版本
116 INFO: Platform: Windows-10-10.0.14393-SP0
117 INFO: wrote D:\WORKSPACE\Python\AProject\ItChat-work\master.spec  //打包的檔案
121 INFO: UPX is not available.
122 INFO: Extending PYTHONPATH with paths
['D:\\WORKSPACE\\Python\\AProject\\ItChat-work',
 'C:\\Python\\Python35-win32\\Lib\\site-packages\\PyQt5\\Qt\\bin',
 'C:\\Python\\Python35-win32\\Lib\\site-packages\\PyQt5\\Qt\\plugins',
 'D:\\WORKSPACE\\Python\\AProject\\ItChat-work']  //特別指定的依賴路徑
122 INFO: checking Analysis
155 INFO: checking PYZ
177 INFO: checking PKG
180 INFO: Building because D:\WORKSPACE\Python\AProject\ItChat-work\build\master\master.exe.manifest changed
181 INFO: Building PKG (CArchive) out00-PKG.pkg
4680 INFO: Building PKG (CArchive) out00-PKG.pkg completed successfully.
4685 INFO: Bootloader C:\Python\Python35-win32\lib\site-packages\PyInstaller\bootloader\Windows-32bit\runw.exe  //這裡可以看出打包是多少位的,Windows-32bit就表明是打包成了32位版本的,具體多少為跟Python執行環境有關
4685 INFO: checking EXE
4687 INFO: Building because manifest changed
4687 INFO: Building EXE from out00-EXE.toc
4687 INFO: Appending archive to EXE D:\WORKSPACE\Python\AProject\ItChat-work\dist\master.exe  //打包後的可執行檔案存放路徑
4708 INFO: Building EXE from out00-EXE.toc completed successfully.