Erstellen eines Projekts in Python3 und PyQT5 für Windows mit PyInstaller

Der Grund für das Schreiben dieses Artikels war die große Anzahl von Fragen, die sich für Anfänger mit solchen Inhalten ständig stellten: "Wie erstelle ich ein Projekt mit pyqt5?", "Warum funktioniert das nicht?", "Welches Tool soll ich wählen?" Heute werden wir lernen, Projekte ohne Qual zu sammeln und mit einem Tamburin zu tanzen.



Irgendwie musste ich eine kleine Desktop-Anwendung schreiben. Python wurde als Programmiersprache für die Entwicklung ausgewählt, da es ideal zur Lösung meines Problems geeignet war. Die tkinter-Bibliothek, mit der Sie eine GUI erstellen können, ist bereits in der Standard-Python-Bibliothek enthalten. Das Problem mit tkinter ist jedoch, dass dieser Bibliothek wenig Aufmerksamkeit geschenkt wird und es ziemlich schwierig ist, einen Kurs, ein Buch oder eine FAQ im Internet zu finden. Daher wurde beschlossen, die leistungsfähigere, modernere und funktionalere Qt-Bibliothek zu verwenden, die in Form der PyQT5-Bibliothek Bindungen an die Python-Programmiersprache aufweist. Weitere Informationen zu PyQT finden Sie hier . Als Beispiel werde ich den Code verwenden:


#!/usr/bin/python3
# -*- coding: utf-8 -*-
import sys
from PyQt5.QtWidgets import QApplication, QWidget
from PyQt5.QtGui import QIcon
class Example(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()
    def initUI(self):
        self.setGeometry(300, 300, 300, 220)
        self.setWindowTitle('Icon')
        self.setWindowIcon(QIcon('web.png'))
        self.show()
if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

Wenn Sie ein mehr oder weniger erfahrener Entwickler sind, wissen Sie, dass Python-Code ohne einen Interpreter nicht ausgeführt werden kann. Und ich möchte jedem Benutzer die Möglichkeit geben, das Programm zu nutzen. Hier helfen uns spezielle Bibliotheken, mit denen wir Projekte in .exe sammeln können, die dann wie eine reguläre Anwendung problemlos ausgeführt werden können.


Es gibt eine große Anzahl von Bibliotheken, die dies ermöglichen, darunter die beliebtesten: cx_Freeze, py2exe, nuitka, PyInstaller usw. Über jede wurde viel geschrieben. Aber ich muss sagen, dass viele dieser Lösungen es Ihnen ermöglichen, Code nur auf einem Computer mit einem vordefinierten Interpreter und pyqt5 auszuführen. Ich glaube nicht, dass der Benutzer zusätzliche Pakete und Programme stören und installieren wird. Ich hoffe, Sie verstehen, dass das Ausführen des Programms in einer Entwicklungsumgebung und dem Benutzer nicht dasselbe ist. Es sollte auch beachtet werden, dass jede Lösung ihre eigenen Probleme hatte: Eine startete nicht, die andere sammelte, was sie dann nicht starten konnte, die dritte weigerte sich, überhaupt etwas zu tun.


Nach langen Tänzen mit Tamburin und aktivem Googeln gelang es mir immer noch, das Projekt mit Pyinstaller zu einer voll funktionsfähigen Anwendung zusammenzusetzen.


Ein bisschen über Pyinstaller


Pyinstaller kompiliert die Python-Anwendung und alle Abhängigkeiten in einem Paket. Der Benutzer kann die Anwendung ausführen, ohne den Python-Interpreter oder Module zu installieren. Pyinstaller unterstützt Python 2.7 und Python 3.3+ sowie Bibliotheken wie numpy, PyQt, Django, wxPython und andere.


Pyinstaller wurde unter Windows, Mac OS X und Linux getestet. Wie dem auch sei, dies ist kein plattformübergreifender Compiler: Um eine Anwendung für Windows zu erstellen, tun Sie dies unter Windows. Um eine Anwendung für Linux zu erstellen, tun Sie dies unter Linux usw.


PyInstaller wurde erfolgreich mit AIX, Solaris und FreeBSD verwendet, es wurden jedoch keine Tests durchgeführt.


Weitere Informationen zu PyInstaller finden Sie hier: Dokumentation .


Darüber hinaus wog die Anwendung nach dem Build nur etwa 15 MB. Dies ist übrigens ein Vorteil von pyinstaller, da nicht alles hintereinander gesammelt wird, sondern nur das, was benötigt wird. Ähnliche Bibliotheken ergaben Ergebnisse für 200-300 mb.


Erste Schritte mit der Montage


Bevor wir mit der Assembly fortfahren, müssen wir die erforderlichen Bibliotheken installieren, nämlich pywin32 und pyinstaller selbst:


pip install pypiwin32
pip install pyinstaller

Geben Sie den folgenden Befehl ein, um sicherzustellen, dass alles in Ordnung ist:


pyinstaller --version

Die Version von pyinstaller sollte angezeigt werden. Wenn alles richtig eingestellt ist, fahren Sie fort.


Führen Sie im Projektordner cmd aus und geben Sie Folgendes ein:


 pyinstaller myscript.py

Eigentlich ist dies das einfachste Team, das unser Projekt zusammenstellen wird.
Die Syntax des Befehls pyinstaller lautet wie folgt:


pyinstaller [options] script [script ...] | specfile


Am häufigsten verwendete Optionen:


--onefile - Zusammenstellung in einer Datei, d.h. DLL-Dateien werden nicht geschrieben.
--windowed - Wenn die Anwendung gestartet wird, wird die Konsole angezeigt.
--noconsole - Wenn die Anwendung gestartet wird, wird die Konsole nicht angezeigt.
--icon = app.ico - Füge dem Fenster ein Symbol hinzu.
--paths - Die Möglichkeit, den Pfad zu den erforderlichen Dateien manuell zu registrieren, wenn der Pyinstaller
sie nicht finden kann (zum Beispiel: --paths D: \ python35 \ Lib \ site-packages \ PyQt5 \ Qt \ bin)


PyInstaller analysiert die Datei myscript.py und führt folgende Schritte aus:


  1. Schreibt die Datei myscript.spec in denselben Ordner wie das Skript.
  2. Erstellt einen Build-Ordner im selben Ordner wie das Skript.
  3. Schreibt einige Protokolle und Arbeitsdateien in den Build-Ordner.
  4. Erstellt einen dist-Ordner im selben Ordner wie das Skript.
  5. Schreibt eine ausführbare Datei in den dist-Ordner.

Infolgedessen wird unser Team folgendermaßen aussehen:


pyinstaller --onefile --icon=name.ico --noconsole myscript.py

Nachdem das Programm ausgeführt wurde, finden Sie zwei Ordner: dist und build. Eigentlich ist im dist Ordner unsere Anwendung. Anschließend kann der Build-Ordner sicher gelöscht werden, was die Leistung der Anwendung nicht beeinträchtigt.


Vielen Dank für Ihre Aufmerksamkeit. Ich hoffe, der Artikel hat Ihnen geholfen.


Jetzt auch beliebt: