Приложение PyQt5 не работает (просто мигает cmd) при сборке с PyInstaller или py2exe, пропуская DLL - PullRequest
0 голосов
/ 25 сентября 2019

Я создал скрипт на python, который использует PyQt5.Теперь все работает, когда я запускаю файл из моего редактора - Studio Code в данном случае.

У меня проблема, когда я пытаюсь развернуть exe-файл с помощью PyInstaller или py2exe, он выдает ошибку при отсутствии библиотеки 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:\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

1 Ответ

0 голосов
/ 26 сентября 2019

Возможно, это не полный ответ на вопрос, почему PyInstaller или py2exe не работает, но я нашел способ правильно развернуть мой exe-файл.Я использовал fman build system .Это не сработало сразу же.Мне пришлось установить Windows 10 SDK и внести небольшие изменения в мой код:

    QFileDialog.getOpenFileName(appctxt)

Это больше не работает, потому что по какой-то причине его нужно было изменить на:

    QtWidgets.QFileDialog.getOpenFileName(appctxt)

Другоекроме того, все, включая создание установщика, работало без проблем.

...