PyQt5应用程序在使用PyInstaller或py2exe构建时不起作用(只是cmd闪烁),缺少dll的



我在python中创建了一个使用PyQt5的脚本。现在,当我从编辑器启动文件时,一切正常 - 在这种情况下是Studio Code。

当我尝试使用 PyInstaller 或 py2exe 部署 exe 时,我遇到了问题,它在构建时会给我丢失 dll 的错误。无论如何,它仍然完成构建,但是当我尝试运行exe文件时,cmd窗口只是闪烁了一小会儿,没有更多的事情发生。

我想这是由于缺少 dll,如果不是,无论如何我都必须首先解决这个问题。

我尝试搜索我在计算机上缺少的dll,有些我根本找不到,例如Qt53DInput,而我认为是在Qt - Qt5Multimedia 中制作的应用程序。

我目前正在使用python 3.7.4,我已经尝试重新安装。我想我没有尝试重新安装 PyQt5,我应该尝试这样做吗?

from PyQt5 import QtWidgets, uic, QtGui, QtCore, QtQuick
import sys
import os.path
import datetime
import shutil

我想在这种情况下,我的脚本中唯一重要的部分是导入,所以我将它们包含在这里。

python -m PyInstaller --paths C:UsersbonanaAppDataLocalProgramsPythonPython37-32Libsite-packagesPyQt5Qtbin my_code.py

我在某处读到包含此路径是个好主意,但由于在任何地方都找不到 dll,包括此文件夹,因此显然根本没有帮助。

这是关于我收到的dll的警告:

Looking for dynamic libraries
32805 WARNING: lib not found: Qt5MultimediaQuick.dll dependency of C:UsersbonanaAppDataLocalProgramsPythonPython37-32libsite-packagesPyQt5QtqmlQtMultimediadeclarative_multimedia.dll
58554 WARNING: lib not found: Qt53DInput.dll dependency of C:UsersbonanaAppDataLocalProgramsPythonPython37-32libsite-packagesPyQt5QtqmlQtQuickScene3Dqtquickscene3dplugin.dll
58844 WARNING: lib not found: Qt53DAnimation.dll dependency of C:UsersbonanaAppDataLocalProgramsPythonPython37-32libsite-packagesPyQt5QtqmlQtQuickScene3Dqtquickscene3dplugin.dll
58989 WARNING: lib not found: Qt53DRender.dll dependency of C:UsersbonanaAppDataLocalProgramsPythonPython37-32libsite-packagesPyQt5QtqmlQtQuickScene3Dqtquickscene3dplugin.dll
59284 WARNING: lib not found: Qt53DLogic.dll dependency of C:UsersbonanaAppDataLocalProgramsPythonPython37-32libsite-packagesPyQt5QtqmlQtQuickScene3Dqtquickscene3dplugin.dll
59440 WARNING: lib not found: Qt53DCore.dll dependency of C:UsersbonanaAppDataLocalProgramsPythonPython37-32libsite-packagesPyQt5QtqmlQtQuickScene3Dqtquickscene3dplugin.dll
60365 WARNING: lib not found: Qt53DQuickScene2D.dll dependency of C:UsersbonanaAppDataLocalProgramsPythonPython37-32libsite-packagesPyQt5QtqmlQtQuickScene2Dqtquickscene2dplugin.dll
60680 WARNING: lib not found: Qt53DRender.dll dependency of C:UsersbonanaAppDataLocalProgramsPythonPython37-32libsite-packagesPyQt5QtqmlQtQuickScene2Dqtquickscene2dplugin.dll
60992 WARNING: lib not found: Qt53DCore.dll dependency of C:UsersbonanaAppDataLocalProgramsPythonPython37-32libsite-packagesPyQt5QtqmlQtQuickScene2Dqtquickscene2dplugin.dll
84256 WARNING: lib not found: api-ms-win-core-winrt-l1-1-0.dll dependency of C:UsersbonanaAppDataLocalProgramsPythonPython37-32Libsite-packagesPyQt5Qtbinqt5bluetooth.dll
84545 WARNING: lib not found: api-ms-win-core-winrt-string-l1-1-0.dll dependency of C:UsersbonanaAppDataLocalProgramsPythonPython37-32Libsite-packagesPyQt5Qtbinqt5bluetooth.dll

也许它不完全解释为什么 PyInstaller 或 py2exe 不起作用,但我已经找到了正确部署我的 exe 的方法。我用过fman构建系统。不过,它并没有立即起作用。我必须安装Windows 10 sdk并对我的代码进行小的更改:

QFileDialog.getOpenFileName(appctxt)

这不再有效,因为出于某种原因需要将其更改为:

QtWidgets.QFileDialog.getOpenFileName(appctxt)

除此之外,包括创建安装程序在内的所有内容都没有问题。

最新更新