当使用 PyInstaller 或 py2exe 构建时,PyQt5 应用程序不工作(只是 cmd 闪烁),缺少 dll
PyQt5 application is not working (just cmd flashing) when built with PyInstaller or py2exe, missing dll's
我在 python 中创建了一个使用 PyQt5 的脚本。现在,当我从我的编辑器(在本例中为 Studio Code)启动文件时,一切正常。
当我尝试使用 PyInstaller 或 py2exe 部署 exe 时遇到问题,它在构建时出现缺少 dll 的错误。无论如何它仍然完成构建,但是当我尝试 运行 exe 文件时,cmd window 只是闪烁了一小会儿,没有更多的事情发生。
我想这是由于缺少 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:\Users\bonana\AppData\Local\Programs\Python\Python37-32\Lib\site-packages\PyQt5\Qt\bin my_code.py
我在某处读到包含此路径是个好主意,但由于在任何地方都找不到 dll,包括此文件夹,所以显然根本没有帮助。
这是关于我收到的 dll 的警告:
Looking for dynamic libraries
32805 WARNING: lib not found: Qt5MultimediaQuick.dll dependency of C:\Users\bonana\AppData\Local\Programs\Python\Python37-32\lib\site-packages\PyQt5\Qt\qml\QtMultimedia\declarative_multimedia.dll
58554 WARNING: lib not found: Qt53DInput.dll dependency of C:\Users\bonana\AppData\Local\Programs\Python\Python37-32\lib\site-packages\PyQt5\Qt\qml\QtQuick\Scene3D\qtquickscene3dplugin.dll
58844 WARNING: lib not found: Qt53DAnimation.dll dependency of C:\Users\bonana\AppData\Local\Programs\Python\Python37-32\lib\site-packages\PyQt5\Qt\qml\QtQuick\Scene3D\qtquickscene3dplugin.dll
58989 WARNING: lib not found: Qt53DRender.dll dependency of C:\Users\bonana\AppData\Local\Programs\Python\Python37-32\lib\site-packages\PyQt5\Qt\qml\QtQuick\Scene3D\qtquickscene3dplugin.dll
59284 WARNING: lib not found: Qt53DLogic.dll dependency of C:\Users\bonana\AppData\Local\Programs\Python\Python37-32\lib\site-packages\PyQt5\Qt\qml\QtQuick\Scene3D\qtquickscene3dplugin.dll
59440 WARNING: lib not found: Qt53DCore.dll dependency of C:\Users\bonana\AppData\Local\Programs\Python\Python37-32\lib\site-packages\PyQt5\Qt\qml\QtQuick\Scene3D\qtquickscene3dplugin.dll
60365 WARNING: lib not found: Qt53DQuickScene2D.dll dependency of C:\Users\bonana\AppData\Local\Programs\Python\Python37-32\lib\site-packages\PyQt5\Qt\qml\QtQuick\Scene2D\qtquickscene2dplugin.dll
60680 WARNING: lib not found: Qt53DRender.dll dependency of C:\Users\bonana\AppData\Local\Programs\Python\Python37-32\lib\site-packages\PyQt5\Qt\qml\QtQuick\Scene2D\qtquickscene2dplugin.dll
60992 WARNING: lib not found: Qt53DCore.dll dependency of C:\Users\bonana\AppData\Local\Programs\Python\Python37-32\lib\site-packages\PyQt5\Qt\qml\QtQuick\Scene2D\qtquickscene2dplugin.dll
84256 WARNING: lib not found: api-ms-win-core-winrt-l1-1-0.dll dependency of C:\Users\bonana\AppData\Local\Programs\Python\Python37-32\Lib\site-packages\PyQt5\Qt\bin\qt5bluetooth.dll
84545 WARNING: lib not found: api-ms-win-core-winrt-string-l1-1-0.dll dependency of C:\Users\bonana\AppData\Local\Programs\Python\Python37-32\Lib\site-packages\PyQt5\Qt\bin\qt5bluetooth.dll
也许对 PyInstaller 或 py2exe 无法正常工作的原因的回答并不完整,但我已经找到正确部署我的 exe 的方法。我用过fman build system。但是,它并没有立即起作用。我必须安装 windows 10 sdk 并对我的代码做一些小改动:
QFileDialog.getOpenFileName(appctxt)
这不再有效,因为出于某种原因需要将其更改为:
QtWidgets.QFileDialog.getOpenFileName(appctxt)
除此之外,包括创建安装程序在内的一切都没有问题。
我在 python 中创建了一个使用 PyQt5 的脚本。现在,当我从我的编辑器(在本例中为 Studio Code)启动文件时,一切正常。
当我尝试使用 PyInstaller 或 py2exe 部署 exe 时遇到问题,它在构建时出现缺少 dll 的错误。无论如何它仍然完成构建,但是当我尝试 运行 exe 文件时,cmd window 只是闪烁了一小会儿,没有更多的事情发生。
我想这是由于缺少 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:\Users\bonana\AppData\Local\Programs\Python\Python37-32\Lib\site-packages\PyQt5\Qt\bin my_code.py
我在某处读到包含此路径是个好主意,但由于在任何地方都找不到 dll,包括此文件夹,所以显然根本没有帮助。
这是关于我收到的 dll 的警告:
Looking for dynamic libraries
32805 WARNING: lib not found: Qt5MultimediaQuick.dll dependency of C:\Users\bonana\AppData\Local\Programs\Python\Python37-32\lib\site-packages\PyQt5\Qt\qml\QtMultimedia\declarative_multimedia.dll
58554 WARNING: lib not found: Qt53DInput.dll dependency of C:\Users\bonana\AppData\Local\Programs\Python\Python37-32\lib\site-packages\PyQt5\Qt\qml\QtQuick\Scene3D\qtquickscene3dplugin.dll
58844 WARNING: lib not found: Qt53DAnimation.dll dependency of C:\Users\bonana\AppData\Local\Programs\Python\Python37-32\lib\site-packages\PyQt5\Qt\qml\QtQuick\Scene3D\qtquickscene3dplugin.dll
58989 WARNING: lib not found: Qt53DRender.dll dependency of C:\Users\bonana\AppData\Local\Programs\Python\Python37-32\lib\site-packages\PyQt5\Qt\qml\QtQuick\Scene3D\qtquickscene3dplugin.dll
59284 WARNING: lib not found: Qt53DLogic.dll dependency of C:\Users\bonana\AppData\Local\Programs\Python\Python37-32\lib\site-packages\PyQt5\Qt\qml\QtQuick\Scene3D\qtquickscene3dplugin.dll
59440 WARNING: lib not found: Qt53DCore.dll dependency of C:\Users\bonana\AppData\Local\Programs\Python\Python37-32\lib\site-packages\PyQt5\Qt\qml\QtQuick\Scene3D\qtquickscene3dplugin.dll
60365 WARNING: lib not found: Qt53DQuickScene2D.dll dependency of C:\Users\bonana\AppData\Local\Programs\Python\Python37-32\lib\site-packages\PyQt5\Qt\qml\QtQuick\Scene2D\qtquickscene2dplugin.dll
60680 WARNING: lib not found: Qt53DRender.dll dependency of C:\Users\bonana\AppData\Local\Programs\Python\Python37-32\lib\site-packages\PyQt5\Qt\qml\QtQuick\Scene2D\qtquickscene2dplugin.dll
60992 WARNING: lib not found: Qt53DCore.dll dependency of C:\Users\bonana\AppData\Local\Programs\Python\Python37-32\lib\site-packages\PyQt5\Qt\qml\QtQuick\Scene2D\qtquickscene2dplugin.dll
84256 WARNING: lib not found: api-ms-win-core-winrt-l1-1-0.dll dependency of C:\Users\bonana\AppData\Local\Programs\Python\Python37-32\Lib\site-packages\PyQt5\Qt\bin\qt5bluetooth.dll
84545 WARNING: lib not found: api-ms-win-core-winrt-string-l1-1-0.dll dependency of C:\Users\bonana\AppData\Local\Programs\Python\Python37-32\Lib\site-packages\PyQt5\Qt\bin\qt5bluetooth.dll
也许对 PyInstaller 或 py2exe 无法正常工作的原因的回答并不完整,但我已经找到正确部署我的 exe 的方法。我用过fman build system。但是,它并没有立即起作用。我必须安装 windows 10 sdk 并对我的代码做一些小改动:
QFileDialog.getOpenFileName(appctxt)
这不再有效,因为出于某种原因需要将其更改为:
QtWidgets.QFileDialog.getOpenFileName(appctxt)
除此之外,包括创建安装程序在内的一切都没有问题。