@tutam

Как правильно скомпилировать программу на python, использующую PyQt5, при помощи pyinstaller?

Пытался собрать при помощи pyinstaller следующую программу на PyQt5:
import sys

from PyQt5.QtCore import Qt
from PyQt5.QtGui import QFont
from PyQt5.QtWidgets import QApplication, QLabel

app = QApplication(sys.argv)
w = QLabel()
w.setWindowFlags(Qt.FramelessWindowHint)
w.setAttribute(Qt.WA_TranslucentBackground)
w.setText("Draw text...")
w.setFont(QFont("Times", 25, QFont.Normal))
# w.move(x, y) or center
w.adjustSize()  # update w.rect() now
w.move(app.desktop().screen().rect().center() - w.rect().center())
w.show()
sys.exit(app.exec_())

Вроде все собирается, но при попытке открыть собранный файл вижу следующее:
5b0aae09eb185417052827.png

В консоли писал следующее:
pyinstaller --onedir --noconsole --onefile --name=myprogram "C:\Users\tutam\Desktop\Python_experiments\test_pyqt5.py"


Если положить собранный экзешник в папку C:\Users\tutam\AppData\Local\Programs\Python\Python35-32, т.е в одну папку с файлом qt.conf, в котором прописаны пути к pyqt, то все работает нормально. Но ведь тогда необходимо наличие pyqt у юзера, т.е. это не самостоятельный исполняемый файл?

Сталкивался ли кто-то с чем-то похожим? Как победили?
  • Вопрос задан
  • 3087 просмотров
Решения вопроса 1
sanya84
@sanya84
Фанатик Python 3
Вот ссылка как правильно собрать приложение работает без проблем один EXE файл.
Проблема pyinstaller Pyqt5 добавить фон.
вот это означает несовместимость PyQt5 и Python. или другое, не важно.
5b0aae09eb185417052827.png

Решение снести PyQt5 и установить так:
spoiler
pip install pyqt5
spoiler
pip install pyqt5-tools
Скоро кстати выйдет PySide2)
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@ilya_ya
Вот это из статьи на хабре https://habr.com/post/325626/:
Наиболее часто используемые опции:

--onefile — сборка в один файл, т.е. файлы .dll не пишутся.
--windowed -при запуске приложения, будет появляться консоль.
--noconsole — при запуске приложения, консоль появляться не будет.
--icon=app.ico — добавляем иконку в окно.
--paths — возможность вручную прописать путь к необходимым файлам, если pyinstaller
не может их найти(например: --paths D:\python35\Lib\site-packages\PyQt5\Qt\bin)
Ответ написан
@tutam Автор вопроса
У самого собрать в единый файл не получилось. Если при сборке не писать --onefile, т.е. не собирать в единый файл, то нужно переместить qwindows.dll из dist\PyQt5\Qt\plugins\platforms\qwindows.dll в dist\platforms\qwindows.dll. Еще об этой ошибке можно почитать здесь.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы