使用PyInstaller时出现“ ImportError:导入时DLL加载失败”

时间:2020-11-03 19:29:29

标签: python pyqt pyqt5 pyinstaller

我正在尝试使用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

该如何解决此错误?

1 个答案:

答案 0 :(得分:1)

本周早些时候,我遇到了完全相同的问题。 我通过完全禁用UPX来修复它。您可以通过向UPX排除列表中添加越来越多的QT DLL来找出如果您仍然要压缩其中的某些文件,则该文件正在损坏,但是现在我可以完全禁用它。 / p>

我尝试了很多事情-PyQT5的不同版本,其他库的不同版本,都没有任何效果。

如果您有用于基于文件夹的构建的.spec文件,请确保在exe和coll部分中均禁用UPX。

相关问题