Die Verteilung einer Python-Anwendung ist an sich nicht einfach, da dabei eine Vielzahl von Faktoren berücksichtigt werden müssen, darunter auch die eingesetzten Bibliotheken. PyInstaller vereinfacht diesen Prozess jedoch auf brillante Weise.
Wenn du die Möglichkeit hattest, eine Entwicklung mit einer Sprache wie Go oder Rust durchzuführen, hast du es wahrscheinlich geschätzt, dass du beim Kompilieren eine einzige ausführbare Binärdatei erzeugen konntest.
Die Verteilung einer solchen ausführbaren Datei ist einfach, da es nicht notwendig ist, während der Ausführung des Programms externe Ressourcen zu verwalten: OS-spezifische Komponenten, grafische Assets, andere Software usw. In den allermeisten Fällen muss der Empfänger einer solchen ausführbaren Datei diese nur noch ausführen.
Wenn du in einer Sprache wie Python entwickelst, ist das Kompilieren nicht so einfach, da die ausführbare Datei normalerweise Python auf dem Zielrechner benötigt, für die Umgebung (Windows, MacOS, eine bestimmte Linux-Version…) konfiguriert werden muss, Zugriff auf verschiedene externe Bibliotheken bietet…
Die PyInstaller-Lösung
Glücklicherweise erkannte Gordon McMillan, ein bekannter Entwickler in der Python-Gemeinschaft, deutlich, dass es eine Lücke in diesem Bereich gab. Im Jahr 2000 nahm er sich des Problems an, wie man aus einem Python-Skript eine völlig eigenständige ausführbare Datei erstellen könnte, ohne dass auf dem Zielrechner eine Python-Installation und verschiedene Abhängigkeiten vorhanden sein müssten. Sein Projekt wurde PyInstaller genannt.
Wie so oft in der Python-Gemeinschaft trugen auch andere Entwickler ihren Teil dazu bei, und so entstand ein echter Dienst.
Was macht PyInstaller ?
Wenn du ein Python-Skript an PyInstaller übermittelst, erzeugt PyInstaller vier Ausgabeelemente:
- Eine Anwendung, die als eigenständige ausführbare Datei (.exe-Datei für Windows, .app-Datei für MacOS, Datei ohne Erweiterung für Linux) verfügbar ist, die unverändert auf dem Zielrechner gestartet werden kann.
- Ein dist-Ordner (Distribution), in dem die oben genannte Anwendung und auch die für ihre Ausführung notwendigen Abhängigkeiten enthalten sind.
- Das ist das Schöne daran: Du musst dich nicht um die Abhängigkeiten kümmern, sondern PyInstaller sucht sie nach der Analyse deines Skripts und integriert sie nach und nach in das Projekt, genauso wie es auch einen Python-Interpreter integriert. Und wenn du „onefile“ angegeben hast, befindet sich nur die ausführbare Datei in diesem Ordner Derjenige, der die Anwendung ausführt, weiß oft nicht, dass sie in Python entwickelt wurde.
- Ein build-Ordner, der temporäre Dateien enthält, die bei der Erstellung der Anwendung erzeugt wurden und nicht für die Verteilung der Anwendung benötigt werden – er dient hauptsächlich der Fehlersuche.
- Eine .spec-Datei: Dies ist eine Standardkonfigurationsdatei für die ausführbare Datei, die bei der ersten Ausführung von PyInstaller auf einem Python-Skript erstellt wird. Nachdem die .spec-Datei entsprechend angepasst wurde, kann PyInstaller nur mit dieser .spec-Datei erneut gestartet werden, um die gewünschte ausführbare Anwendung zu erzeugen.
Gründe für die Beliebtheit von PyInstaller
Wie man sich vorstellen kann, haben Python-Entwickler den PyInstaller wie einen Segen begrüßt.
Es hat sich herausgestellt, dass es leicht zu implementieren ist, auch wenn man es zum ersten Mal in Angriff nimmt. Die Verfügbarkeit des Onefile-Modus wurde sehr positiv aufgenommen, da er eine besonders benutzerfreundliche ausführbare Datei für den Benutzer der Anwendung erzeugt.
Außerdem hat PyInstaller den Vorteil, plattformübergreifend zu sein: Es kann Code für Windows, MacOS, GNU/Linux, aber auch für Unix-Umgebungen wie Solaris oder FreeBSD erzeugen.
💡Auch interessant:
Data Cleaning Python |
PySpark – Alles wissenswerte |
Python – Vermeide diese Fehler |
API mit Python Datenbank verbinden |
Webhooks in Python |
Welche Alternativen gibt es zu PyInstaller?
Es gibt verschiedene Alternativen zu PyInstaller, die jeweils bestimmte Vor- und Nachteile haben.
- Cx_Freeze: Wie PyInstaller kann auch dieser Compiler ausführbare Dateien für Windows, MacOS und Linux erstellen. Diese Executables sind kleiner und können daher schneller geladen werden. Die Dokumentation von Cx_Freeze ist jedoch weniger umfangreich.
- Nuitka: Dieser Compiler wandelt das Python-Skript in C-Code um, der nach der Kompilierung eine gute Leistung zeigt. Der Nachteil ist, dass die Kompilierungszeit verlängert wird.
- BeeWare’s Briefcase: Die von ihnen erstellten Anwendungen können sowohl auf Computern als auch auf mobilen Plattformen laufen. Allerdings ist es weniger einfach, Dokumentation und Anwendungsbeispiele zu finden.