最近打算嘗試用Python3來寫Qt5程序,畢竟C++對我來說不夠熟悉,語法也過于復雜,還是Python得心應手些拇派。
首先要解決的一大問題就是程序的打包發(fā)布了,不然好不容易寫了個應用凿跳,只能在自己機器上跑件豌,不能在沒有配置開發(fā)環(huán)境的電腦上運行,應用的局限性就很大了拄显。
本文詳實記錄了從.py文件打包發(fā)布成可直接運行的.exe文件的步驟苟径。所用的工具是pyinstaller(3.2.1),注意:此版本不支持Python3.6環(huán)境躬审,僅支持Python 2.7棘街, 3.3, 3.4和3.5承边。參見Welcome to PyInstaller official website遭殉。
測試環(huán)境:
- Win 7 (x64)
- Python 3.5.3(x86)
- PyQt5 (5.8.1)
安裝pyinstaller
pip install pyinstaller
如果你電腦上沒安裝pywin32,此命令會一同安裝pypiwin32博助。
此時如果直接嘗試打包好像能打包成功险污,但是應用程序會閃退。原因是pyinstaller無法判斷pyqt動態(tài)鏈接庫的位置富岳。解決方法:在打包時指明pyqt動態(tài)鏈接庫的位置蛔糯。
切換到要打包的.py文件所在的目錄,在此路徑打開命令行:
pyinstaller --paths "D:\Program Files (x86)\Python35-32\Lib\site-packages\PyQt5\Qt\bin" test.py
其中窖式,--paths后跟著的是本機pyqt動態(tài)鏈接庫的位置蚁飒,test.py是打包的文件。
打包后的應用程序在當前目錄下的dist文件夾下萝喘,執(zhí)行程序發(fā)現(xiàn)仍然會有個控制臺窗口彈出淮逻,這是因為沒有在打包時輸入對應的參數(shù)琼懊。
pyinstaller --paths "D:\Program Files (x86)\Python35-32\Lib\site-packages\PyQt5\Qt\bin" -Fw test.py
-F的效果是打包成一個單文件,-w的效果是取消控制臺爬早。
也可以把pyqt的動態(tài)鏈接庫路徑添加到系統(tǒng)的環(huán)境變量中哼丈,這樣就可以不用每次輸入一長串的paths參數(shù)。