windows系統(tǒng)+python3+pyqt5+pyinstaller打包媒殉,經常會出現各種打包異常情況梁沧。
如果代碼沒有特別異常交播,那么綜合原因重虑,大抵都是這四個元素之間的匹配問題,引起的秦士。
1.windows系統(tǒng)的版本和位數 (mac系統(tǒng)和linux 沒有進行測試過)
2.python3的版本和位數
3.pyqt5的版本和位數 (如果pip安裝缺厉,則位數同python3)
4.pyinstaller的版本和位數(一般pip安裝,無需考慮位數)
坑1.pyinstaller打成的包隧土,可以在64位操作系統(tǒng)使用提针,無法在32位操作系統(tǒng)使用
坑的成因:
1.python存在64位版本和32位版本。
2.64位版本打成的包曹傀,只能在64位操作系統(tǒng)使用辐脖。
3.32位版本打成的包,即可以在64位操作系統(tǒng)使用皆愉,也可以在32位操作系統(tǒng)使用嗜价。
解決方案:
1.重新安裝32位版本的python,進行開發(fā)幕庐。
坑2.pyinstaller打成的包久锥,可以在win7以上操作系統(tǒng)使用,無法在xp操作系統(tǒng)使用
坑的成因:
1.python3 從3.5版本開始异剥,就已經不支持xp操作系統(tǒng)了瑟由。
解決方案:
2.重新安裝3.4版本的python,進行開發(fā)冤寿。
坑3.pyqt5應用歹苦,開發(fā)運行時是正常,但pyinstaller打成的包督怜,界面失真變丑暂氯。
坑的成因:
1.pyinstaller 不支持最新版本的pyqt5。
解決方案:
2.重新安裝低版本的pyqt5亮蛔,進行開發(fā)。(當前推薦:5.8.2版本)
命令
pip uninstall pyqt5
pip install pyqt5==5.8.2
坑4.pyqt5應用擎厢,開發(fā)運行時是正常究流,但pyinstaller打成的包,無法運行动遭,提示failed to execute script xxx芬探。
坑的成因:(同坑3)
1.pyinstaller 不支持最新版本的pyqt5。
解決方案:(同坑3)
2.重新安裝低版本的pyqt5厘惦,進行開發(fā)偷仿。(當前推薦:5.8.2版本)
命令
pip uninstall pyqt5
pip install pyqt5==5.8.2
坑5.pyqt5應用哩簿,開發(fā)運行時是正常,但pyinstaller無法打包成功酝静。
坑的成因:(同坑3)
1.pyinstaller 不支持最新版本的pyqt5节榜。
解決方案:(同坑3)
2.重新安裝低版本的pyqt5,進行開發(fā)别智。(當前推薦:5.8.2版本)
命令
pip uninstall pyqt5
pip install pyqt5==5.8.2
坑6.pip install pyqt5宗苍,安裝不了pyqt5,提示找不到資源薄榛。
坑的成因:
1.你的python3可能是最新版本讳窟,pyqt5-tools還不支持最新版本的python3
解決方案:
2.重新安裝低版本的python3,進行開發(fā)敞恋。(當前推薦:3.6.6版本)
坑7.pip install pyqt5-tools丽啡,安裝不了pyqt5-tools,提示找不到資源硬猫。
坑的成因:
1.你的python3可能是最新版本补箍,pyqt5-tools還不支持最新版本的python3
解決方案:
2.重新安裝低版本的python3,進行開發(fā)浦徊。(當前推薦:3.6.6版本)
坑8.pip install pyqtchart馏予,但是安裝不了pyqtchart。
坑的成因:
1.pyqtchart對pyqt5的版本有依賴需求盔性。
解決方案:
2.針對pyqt5的版本進行安裝霞丧。
命令如: pip install pyqtchart==5.8
坑9.pip install pyqtdatavisualization,但是安裝不了pyqtdatavisualization冕香。
坑的成因: (同坑8)
1.pyqtdatavisualization對pyqt5的版本有依賴需求蛹尝。
解決方案:(同坑8)
針對pyqt5的版本進行安裝。
2.命令如: pip install pyqtdatavisualization==5.8
坑10.python3的orm技術悉尾,使用sqlalchemy模塊突那,開發(fā)運行時都是正常的,但pyinstaller打成的包构眯,數據庫執(zhí)行異常愕难。
坑的成因:
1.pyinstaller打成的包,在執(zhí)行連表后的對象屬性讀取時惫霸,失敗猫缭。
解決方案:
2.找不到好的解決方法,只能換回sql語言來完成壹店。(如有好的解決方法猜丹,敬請留言告知)
坑11.windows10 下安裝pyinstaller pywin32
坑的成因:
1.無法通過win32接口訪問windows系統(tǒng)
解決辦法
檢查是否正確安裝win32
經檢查可以使用pypiwin32 替代PyWin32
ImportError: DLL load failed
用 PyInstaller 給程序打包的時候遇到了pyi_rth_qt5plugins returned -1 的 Fatal Error 提醒。這個錯誤信息幾乎是毫無用處的硅卢,修改 .spec 文件射窒,打開 debug 模式以及顯示 console 后藏杖,在 running pyi_rth_qt5plugins.py的時候發(fā)生了 ImportError: DLL load failed 找不到指定的模塊 錯誤。
回頭想起了在編譯的時候看到了很多WARNNING消息脉顿,回過頭查看蝌麸,發(fā)現了很多 lib not found 的問題。但是仔細檢查了 Python 庫之后弊予,這些 DLL 明明在 C:\Python35-32\Lib\site-packages\PyQt5\Qt\bin 目錄下祥楣,最后的搜索得到的解決辦法是把這個目錄添加到環(huán)境變量里。
問題得到了解決汉柒,猜測原因是因為之前使用 pip 安裝 PyQt 的時候误褪, pypi.python.org 總是連接不順暢,最后去下了個 .whl 文件直接安裝碾褂,導致沒有對應環(huán)境變量打包的時候找不到 DLL兽间。
環(huán)境: Python == 3.5.2 ,PyInstaller == 3.1.1
10951 WARNING: lib not found: Qt5Svg.dll dependency of C:\python35-32\lib\site-packages\PyQt5\Qt\plugins\imageformats\qsvg.dll
11206 WARNING: lib not found: Qt5Gui.dll dependency of C:\python35-32\lib\site-packages\PyQt5\Qt\plugins\imageformats\qsvg.dll
11437 WARNING: lib not found: Qt5Core.dll dependency of C:\python35-32\lib\site-packages\PyQt5\Qt\plugins\imageformats\qsvg.dll
11763 WARNING: lib not found: Qt5Gui.dll dependency of C:\python35-32\lib\site-packages\PyQt5\Qt\plugins\imageformats\qtga.dll
12017 WARNING: lib not found: Qt5Core.dll dependency of C:\python35-32\lib\site-packages\PyQt5\Qt\plugins\imageformats\qtga.dll
12224 WARNING: lib not found: Qt5Gui.dll dependency of C:\python35-32\lib\site-packages\PyQt5\Qt\plugins\platforms\qminimal.dll
12418 WARNING: lib not found: Qt5Core.dll dependency of C:\python35-32\lib\site-packages\PyQt5\Qt\plugins\platforms\qminimal.dll
12625 WARNING: lib not found: Qt5Gui.dll dependency of C:\python35-32\lib\site-packages\PyQt5\Qt\plugins\platforms\qwindows.dll
12833 WARNING: lib not found: Qt5Core.dll dependency of C:\python35-32\lib\site-packages\PyQt5\Qt\plugins\platforms\qwindows.dll
api-ms-win-crt-runtime 錯誤
PyInstaller 打包之后的程序運行的時候發(fā)生 api-ms-win-crt-runtime動態(tài)庫之類的錯誤正塌,似乎只有在 Python 3.5 下打包才會遇到嘀略。因為 Universal CRT (KB2999226)缺失,可以通過安裝此更新來解決問題乓诽≈难颍或者直接下載 Visual C++ Redistributable (x86 ,x64 )。
參考鏈接:api-ms-win-crt-runtime-l1-1-0.dll is missing when open office file
希望能幫到大家鸠天,歡迎繼續(xù)補充K嫌!