我正在尝试使用PyInstaller打包PyQt5 Python应用。
当我正常打包而不使用UPX时,它可以正常工作。但是,当我开始使用UPX时,我开始遇到很多问题。我必须使用--upx-exclude "vcruntime140.dll"
来防止该文件被破坏。
然后,我遇到了这个问题。
Traceback (most recent call last):
File "main.py", line 3, in <module>
ImportError: DLL load failed while importing QtWidgets: The parameter is incorrect.
[26400] Failed to execute script main
这是main.py
的开头:
import sys
import PyQt5
from PyQt5 import QtWidgets
from PyQt5.QtGui import QIcon
我读过here(我想是类似的问题),我可能在隐藏导入方面遇到了麻烦,所以我先用--hidden-import "PyQt5"
然后再用--hidden-import "PyQt5" --hidden-import "QtWidgets"
运行PyInstaller命令。但是我一直遇到同样的错误,DLL load failed while importing QTWidgets
。
我正在使用的完整PyInstaller命令是:
pyinstaller -n "[exe name]" -i "[icon file path].ico" --upx-dir "[path to UPX]\upx-3.96-win64" --upx-exclude "vcruntime140.dll" --hidden-import "PyQt5" --hidden-import "QtWidgets" --clean main.py
该如何解决此错误?
答案 0 :(得分:1)
本周早些时候,我遇到了完全相同的问题。 我通过完全禁用UPX来修复它。您可以通过向UPX排除列表中添加越来越多的QT DLL来找出如果您仍然要压缩其中的某些文件,则该文件正在损坏,但是现在我可以完全禁用它。 / p>
我尝试了很多事情-PyQT5的不同版本,其他库的不同版本,都没有任何效果。
如果您有用于基于文件夹的构建的.spec文件,请确保在exe和coll部分中均禁用UPX。