如何修复";导入QtWidgets时DLL加载失败"



问题:

因此,在编译之后,在dist文件夹中,有一个"PyQt5.Qt.pyd";文件但我得到了这个错误:

Traceback (most recent call last):
File "main.py", line 102, in <module>
File "<frozen zipimport>", line 259, in load_module
File "<loader>", line 10, in <module>
File "<loader>", line 8, in __load
ImportError: (DLL load failed while importing QtWidgets: The specified module could not be found.) 'Z:\Project\dist\PyQt5.QtWidgets.pyd'

我非常确信;Qt"文件夹;C: \Program Files(x86(\Python38-32\Lib\site packages\PyQt5\Qt",编译后转换为"strong>";PyQt5.Qt.pyd"文件应该对此错误负责。因为当我将此位置添加到我的Windows PATH时:"C: \Program Files(x86(\Python38-32\Lib\site packages\PyQt5\Qt\bin">,编译后的程序运行完美。


我的临时修复是:

我把";Qt";文件夹到";dist";,并制作了添加"的批处理脚本;。\dist\Qt\bin";到PATH,对于当前CMD窗口。。。只是为了我现在可以把它发给我的客户进行测试。。。但这远不是最终的解决方案。。。该怎么办?

(我也尝试过将"bin"或"platform\qwindows.dll"从"Qt"复制到dist,但没有成功…(

如有任何帮助或建议,我将不胜感激。提前感谢!


我的信息:

操作系统信息:Windows 10 x64,Python 3.8.6 x32

点数冻结:

altgraph==0.17
cachetools==4.1.1
fbs==0.9.0
future==0.18.2
macholib==1.14
pefile==2019.4.18
Pillow==8.0.1
py2exe==0.10.0.2
PyInstaller==3.4
PyQt5==5.15.1
PyQt5-sip==12.8.1
pywin32==228
pywin32-ctypes==0.2.0
six==1.15.0

py2xe设置.py:

from distutils.core import setup
import py2exe
setup(windows=[{"script":"main.py"}], options={"py2exe":{"includes":["PyQt5.Qt","PyQt5.sip","PyQt5.QtWidgets","PyQt5.QtCore", "PyQt5.QtGui"]}})

将所有dll从PyQt5\Qt\bin复制到dist,除了以Qt5*开头的dll(如果不使用direct3d或opengl,则可能不需要d3dcompiler_47、libEGL、libGLESv2和opengl32sw(

我建议您尝试在新安装的窗口(可能在虚拟机中(上运行用py2exe转换的应用程序,以了解它是否有其他依赖项。

更新:实际上,我只需要安装适用于Visual Studio 2015、2017和2019的Microsoft Visual C++Redistributable,而无需复制任何dll文件。https://support.microsoft.com/en-us/topic/the-latest-supported-visual-c-downloads-2647da03-1eea-4433-9aff-95f26a218cc0

最新更新