Kurs
In diesem Artikel zeige ich dir ein paar Szenarien, in denen es sinnvoll ist, deine Python-Datei in eine ausführbare Datei umzuwandeln. Ich zeige dir auch, wie du eine Python-Datei mit drei Python-Bibliotheken in eine ausführbare Datei umwandeln kannst: Pyinstaller, Nuitka und auto-py-to-exe.
Klon dieses Github-Repository, um diesem Tutorial folgen zu können.
Warum Python in .exe umwandeln?
Ausführbare Dateien – Dateien mit der Endung „ .exe “ – werden benutzt, um Software auf Computern mit Windows-Betriebssystem zu installieren oder auszuführen. Die Datei, die es einem Windows-Computer ermöglicht, eine Anwendung auszuführen, ist die Datei „ .exe “.
Es gibt ein paar Gründe, warum du vielleicht ein Python-Programm in eine ausführbare Datei umwandeln möchtest. Schauen wir uns ein paar davon an:
Böswillige Aktivitäten
Leider gibt's im Internet Leute, die gerne bösartige Software verbreiten, um die Geräte anderer zu infizieren und ihre Daten zu klauen. Eine Möglichkeit, diesen Leuten entgegenzuwirken, besteht darin, nicht auf ihre Betrügereien hereinzufallen – das heißt, keine Dateien blind herunterzuladen oder zu öffnen, die nicht aus einer zuverlässigen Quelle stammen. .exe
Zugänglichkeit
Ein weiterer Grund, warum du eine Python-Datei in eine ausführbare Datei umwandeln möchtest, könnte sein, dass du eine Anwendung mit anderen Leuten teilen willst. Ein typisches Python-Programm kann mehrere Abhängigkeiten haben, die ein anderer Nutzer installieren muss, bevor das Programm läuft. Was ist, wenn die Person nicht programmieren kann? In solchen Fällen kann es echt unfair sein, von einem Nutzer zu erwarten, dass er erst programmieren lernt, bevor er eine App nutzen kann. Wenn du eine Python-Datei in eine ausführbare Datei umwandelst, können Leute dein Programm nutzen, ohne Python zu kennen.
Quellcode schützen
Aber selbst wenn sie wissen, wie man programmiert, kann es eine gute Idee sein, eine Python-Datei in eine ausführbare Datei umzuwandeln, um zu verhindern, dass dein Code geklaut wird. Eine ausführbare Datei verhindert, dass Code geklaut wird, weil sie eine kompilierte Version deines Quellcodes erstellt, die schwerer zu verstehen ist als der eigentliche Quellcode.
Jobplanung
Du kannst auch einen Job auf deinem Computer planen, um eine „ .exe “-Datei zu einem bestimmten Zeitpunkt auszuführen.
Python von Grund auf lernen
Wie man ein Python-Skript in eine .exe-Datei umwandelt
Jetzt, wo du weißt, was „ .exe “-Dateien sind und warum du vielleicht eine Python-Datei in eine „ .exe “-Datei umwandeln möchtest, schauen wir uns an, wie das in Python geht. In diesem Abschnitt schauen wir uns drei Frameworks an: pyinstaller, nuitka und auto-py-to-exe.
Man sollte bedenken, dass auto-py-to-exe es bekannte Kompatibilitätsprobleme mit Python 3.11 und höher gibt und es im Allgemeinen nur bis Python 3.10 zuverlässig funktioniert, es sei denn, du verwendest bestimmte neuere Versionen und sorgfältig abgestimmte Abhängigkeiten.
Also, dann fangen wir mal an.
Das Skript vorbereiten
Für diese Demo nehmen wir den offenen Datens atz von Airbnb für New York City.
Bevor Datenwissenschaftler einen Datensatz analysieren können, müssen die Daten so formatiert werden, dass sie mit den von ihnen verwendeten Tools kompatibel sind. Also, wenn du ein Validierungsschema erstellst, legst du damit alle Validierungen fest, die für jedes Feld gelten, und zwar ganz klar. Dieser Prozess kann ziemlich repetitiv sein. Damit unsere Datenwissenschaftler nicht immer wieder die gleichen Aufgaben machen müssen, haben wir ein automatisches Validierungsskript entwickelt, das regelmäßig läuft.
Anmerkung: Sei super vorsichtig, wenn du relative Pfade benutzt, wenn dein Skript Daten lesen muss. Du solltest lieber absolute Pfade verwenden, um sicherzustellen, dass deine ausführbare Datei wie erwartet funktioniert.
import pandas as pd
from pandas.api.types import CategoricalDtype
def perform_validation(filename:str):
"""
A function to validate inputs for NYC Airbnb Open data.
"""
path_to_data = "../.."
data = pd.read_csv(f"{path_to_data}{filename}")
# Convert neighbourhood_group to type category
neighbourhood_group_to_cat = CategoricalDtype(
categories=["Manhattan", "Brooklyn", "Queens", "Bronx", "Staten Island"],
ordered=False
)
data["neighbourhood_group"] = data["neighbourhood_group"].astype(neighbourhood_group_to_cat)
# Convert room_type to type category
room_type_to_cat = CategoricalDtype(
categories=["Entire home/apt", "Private room", "Shared room"],
ordered=False
)
data["room_type"] = data["room_type"].astype(room_type_to_cat)
# Convert last_review to datetime
data["last_review"] = pd.to_datetime(data["last_review"])
# Minimum nights a person can stay is one night
assert data["minimum_nights"].min() >= 1
# Minimum number of reviews is 0
assert data["number_of_reviews"].min() >= 0
# Minimum number of reviews per month
assert data["reviews_per_month"].min() >= 0.00
# Minimum amount of listings per host
assert data["calculated_host_listings_count"].min() >= 1
# Number of days when listing is available for books
# Could be 0 if tennant has long term booking
assert data["availability_365"].min() >= 0
# Save validated data
data.to_csv("validated_ab_nyc_2019.csv", index=False)
if __name__ == "__main__":
# User inputs filename
filename = input("Enter filename: ")
# Ensure it's a string
if not filename.isalpha():
filename = str(filename)
# Automated validation
perform_validation(filename)
Hey, wir haben dieses Skript in die Verzeichnisse „ pyinstaller “, „ nuitka “ und „ auto-py-to-exe “ reinkopiert.
# Directory structure
| AB_NYC_2019.csv
|
+---auto_py_to_exe
| | requirements.txt
| | validation.py
+---pyinstaller
| requirements.txt
| validation.py
Jedes Verzeichnis hat seine eigene virtuelle Umgebung, in der wir die Anforderungen installiert haben: siehe pyinstaller-Anforderungen oder auto-py-to-exe-Anforderungen. Wenn du den Code mitverfolgst, stell sicher, dass du eine virtuelle Umgebung im pyinstaller-Verzeichnis und im auto-py-to-exe-Verzeichnis erstellst.
Das obige Skript hat eine Funktion – mehr über das Schreiben von Funktionen in Python – die einen Datensatz einliest und dann das erwartete Format bestimmter Felder in den Daten festlegt. Der nächste Schritt ist, dieses Python-Skript in eine ausführbare Datei umzuwandeln, die regelmäßig laufen kann, um einen formatierten Datensatz zu erstellen.
Methode 1: Pyinstaller
Mit Pyinstaller kannst du eine Python-Datei schnell über dein Terminal in eine ausführbare Datei umwandeln. Sobald du deine virtuelle Umgebung erstellt und die Voraussetzungen für dein Skript (einschließlich pyinstaller) installiert hast, öffnest du einfach das Terminal und gehst zu dem Verzeichnis, in dem sich die Python-Datei befindet, die du konvertieren möchtest.
Als nächstes musst du den folgenden Befehl ausführen:
pyinstaller --onefile validation.py
Zuerst siehst du mehrere Protokolle, von denen das letzte ungefähr so was wie „erfolgreich abgeschlossen“ sagt – vorausgesetzt, die ausführbare Datei wurde erfolgreich erstellt.

Abbildung 1: Protokolle, die zeigen, dass die ausführbare Datei erstellt wurde und dass sie erfolgreich fertiggestellt wurde.
Wenn du das hier durchziehst, werden zwei neue Ordner namens „build“ und „dist“ im selben Ordner erstellt, wo die Python-Datei ist. Im Verzeichnis „dist“ findest du das Skript „ validation.exe “.

Abbildung 2: Ein GIF, das zeigt, wie validation.exe auf einen Datensatz angewendet wird.
Um das Skript zu starten, klick einfach drauf. Dadurch öffnet sich eine Konsole, in der du den Dateinamen der Daten eingeben musst, die du überprüfen willst. Sobald du den Dateinamen eingegeben hast, wird die Konsole geschlossen und die validierten Daten werden im selben Verzeichnis wie die Datei „ validation.exe “ erstellt – siehe Abbildung 2.
Methode 2: Nuitka
Nuitka ist ein weiterer Ansatz, den man sich mal anschauen sollte. Anders als PyInstaller, das dein Python-Skript mit dem Python-Interpreter zusammenpackt, kompiliert Nuitka deinen Python-Code tatsächlich zu C-Code. Das führt zu besserem Quellcode-Schutz, möglicherweise schnellerer Ausführung und oft kleineren Dateigrößen. Der Nachteil ist, dass das Kompilieren länger dauert und die Einrichtung komplizierter ist.
Installation und Einrichtung
Nachdem du eine virtuelle Umgebung erstellt und Nuitka mit „ pip install nuitka “ installiert hast, musst du sicherstellen, dass ein C-Compiler auf deinem System verfügbar ist. Welchen Compiler du brauchst, hängt von deinem Betriebssystem ab:
-
Windows: Lade die Microsoft Visual C++ Build Tools (kostenlos) von der Visual Studio-Website runter und installiere sie oder benutze MinGW.
-
macOS: Installiere die Xcode-Befehlszeilentools mit
xcode-select --install -
Linux: GCC ist meistens schon installiert; wenn nicht, installiere es über deinen Paketmanager.
Nach der Installation erkennt Nuitka deinen Compiler automatisch. Wenn du Probleme hast, check mal, ob der Compiler in deinem System PATH ist.
Das Validierungsskript mit Nuitka umwandeln
Lass uns dasselbe NYC Airbnb-Validierungsskript mit Nuitka umwandeln, genau wie wir es mit PyInstaller und auto-py-to-exe gemacht haben. Um unser Skript in eine ausführbare Datei zu kompilieren, machst du Folgendes:
python -m nuitka --onefile --follow-imports --include-package=pandas validation.py
Schauen wir uns die einzelnen Flaggen mal genauer an:
-
--onefile: Erstellt eine einzige ausführbare Datei (anstatt eines Verzeichnisses mit mehreren Dateien und Abhängigkeiten). -
--follow-imports: Fügt automatisch alle Module hinzu, die dein Skript importiert. -
--include-package=pandas: Fügt das Pandas-Paket extra hinzu (manche Pakete werden nicht automatisch erkannt, also stellt das sicher, dass es dabei ist).
Im Gegensatz zu PyInstaller, das in etwa 30 Sekunden fertig ist, dauert Nuitka deutlich länger – normalerweise 5 bis 15 Minuten, je nachdem, wie kompliziert dein Code ist und wie schnell dein System ist. Im Terminal siehst du die Kompilierungsausgabe, die den Fortschritt der C-Kompilierungsphase anzeigt.
Sobald das erledigt ist, bekommst du eine Erfolgsmeldung, die dir sagt, dass die ausführbare Datei erstellt wurde. Die kompilierte ausführbare Datei wird im selben Verzeichnis wie die Datei „ validation.py “ erstellt.
Klick einfach doppelt auf „ validation.exe “ oder starte es über die Befehlszeile. Es öffnet sich ein Konsolenfenster, in dem du einen Dateinamen eingeben musst, genau wie bei PyInstaller. Nachdem du „ AB_NYC_2019.csv“ eingegeben und die Eingabetaste gedrückt hast, läuft die Validierung, die Konsole schließt sich und eine neue Datei „ validated_ab_nyc_2019.csv “ wird im selben Verzeichnis erstellt, genau wie bei der PyInstaller-Version.
Methode 3: auto-py-to-exe
Der erste Schritt, um mit auto-py-to-exe eine ausführbare Datei zu erstellen, ist, das Programm mit dem folgenden Befehl zu starten:
auto-py-to-exe
Das sollte eine grafische Benutzeroberfläche (GUI) anzeigen, die uns dabei hilft, unsere Python-Datei in eine ausführbare Datei umzuwandeln.

Abbildung 3: Die grafische Benutzeroberfläche kam nach dem Ausführen des Befehls „auto-py-to-exe“ wieder zurück.
Hey, wenn's nicht klappt, check mal, ob du eine virtuelle Umgebung im Verzeichnis „ auto-py-to-exe ” erstellt und die Datei „requirements.txt” mit dem folgenden Befehl in deiner virtuellen Umgebung installiert hast: „ pip install -r requirements.txt ”.
Die Benutzeroberfläche hat ein paar Felder, die wir ausfüllen müssen. Schauen wir uns mal jedes einzelne an und machen wir eine Pause:
- Genaue Lage: In diesem Feld musst du den Speicherort der Python-Datei angeben, die du in eine ausführbare Datei umwandeln möchtest.
- Onefile: Hier kannst du auswählen, ob du ein einzelnes Verzeichnis oder eine einzelne Datei erstellen möchtest. Ein einzelnes Verzeichnis enthält alle Abhängigkeiten, die du zum Ausführen deines Skripts brauchst, sowie eine ausführbare Datei. Wenn du „Eine Datei“ auswählst, wird eine einzelne ausführbare Datei erstellt.
- Konsolenfenster: Die Wahl zwischen einem „konsolenbasierten“ oder „fensterbasierten“ Konsolenfenster hängt davon ab, was dein Skript zurückgibt. Das Skript, das wir oben erstellt haben, verlangt zum Beispiel, dass der Benutzer einen Dateinamen eingibt. Deshalb ist die „konsolenbasierte“ Lösung besser, weil sie die Konsole öffnet, nachdem die ausführbare Datei gestartet wurde. Wenn du die Konsolenausgaben nach dem Ausführen der ausführbaren Datei nicht anzeigen musst, ist „Window Based“ eine gute Wahl.
Wir haben auch andere Optionen, um die Erstellung unserer ausführbaren Datei anzupassen (z. B. Symbole, zusätzliche Dateien und mehr hinzufügen). Hier kannst du auch den Pfad ändern, wo die Dateien, die von deiner ausführbaren Datei erstellt werden, gespeichert werden sollen: Klick dazu einfach auf die Option „Einstellungen“ und such dir das Verzeichnis aus, wo die Dateien gespeichert werden sollen. Der letzte Schritt ist, „.py in .exe konvertieren“ auszuwählen, um unsere Python-Datei umzuwandeln.
Schau dir das GIF in Abbildung 4 an, um zu sehen, wie wir unsere ausführbare Datei eingerichtet haben.

Abbildung 4: Ein GIF, das zeigt, wie man auto-py-to-exe einrichtet
Wenn wir zurück zum Verzeichnis „auto-py-to-exe” gehen, gibt's da ein Verzeichnis namens „output”: Da ist unsere Datei „ validation.exe ”. Wähle die Datei aus, um sie zu starten. Dann öffnet sich eine Konsole, wo du einen Dateinamen eingeben musst:

Abbildung 5: Die Konsole ist nach dem Ausführen der ausführbaren Validierungsdatei zurück.
Gib einfach den Namen der Datei ein – in diesem Beispiel „ AB_NYC_2019.csv “ – und drück die Eingabetaste. Dadurch wird die Konsole geschlossen und eine neue Datei namens „ validated_ab_nyc_2019.csv “ im Ausgabeverzeichnis (wo sich die ausführbare Datei befindet) erstellt.
PyInstaller vs Nuitka
Hier siehst du, wie Nuitka und PyInstaller beim gleichen Validierungsskript abschneiden, zusammen mit auto-py-to-exe als GUI-Alternative:
|
Metrisch |
PyInstaller |
auto-py-to-exe |
Nuitka |
|
Größe der ausführbaren Datei |
Durchschnitt |
Durchschnitt |
20–30 % kleiner |
|
Bauzeit |
Durchschnitt |
Durchschnitt |
16 Mal länger |
|
Startzeit |
~2 Sekunden |
~2 Sekunden |
~1 Sekunde |
|
Laufzeit (Validierungsaufgabe) |
~3 Sekunden |
~3 Sekunden |
~2,5 Sekunden |
|
Quellcode-Schutz |
Mäßig |
Mäßig |
Super |
|
Python 3.8–3.10 |
✅ Super |
✅ Super |
✅ Super |
|
Python 3.11+ |
✅ Super |
⚠️ Bekannte Probleme |
✅ Super |
PyInsund Nuitka bieten beide zuverlässige Unterstützung für alle aktuellen Python-Versionen, während auto-py-to-exe bekannte Kompatibilitätsprobleme mit Python 3.11 und höher hat. Nuitka macht kleinere, schnellere ausführbare Dateien mit besserem Schutz für geistiges Eigentum – aber der Erstellungsprozess dauert ungefähr 16 Mal länger als bei PyInstaller.
Fazit
In diesem Artikel hast du gelernt:
- Was ist eine Python-Datei?
- Was ist eine ausführbare Datei und wozu kann sie gut sein?
- Wie man ein Python-Skript mit pyinstaller in eine ausführbare Datei umwandelt. Das ist ein super Tool für alle, die mit der Befehlszeile besser klarkommen.
- So machst du ein Python-Skript mit auto-py-to-exe zu einer ausführbaren Datei. Dieses Tool hat eine grafische Benutzeroberfläche (GUI), wo du einstellen kannst, wie die ausführbare Datei erstellt werden soll.
Erfahre mehr darüber, wie du Python für Data Science nutzen kannst, im DataCamp -Lernpfad „Associate Data Scientist with Python”.
FAQs
Kann ich zusätzliche Dateien (z. B. Bilder, Konfigurationsdateien) in die ausführbare Datei packen?
Ja, mit allen drei Tools kannst du zusätzliche Dateien, die dein Skript braucht, zusammenpacken. Für PyInstaller und Nuitka kannst du die Option „ --add-data “ nutzen, um die Dateien anzugeben, die du einbinden willst. In auto-py-to-exe gibt's in der GUI 'ne Option, um Dateien unter „Zusätzliche Dateien“ hinzuzufügen. Stell sicher, dass du relative oder absolute Pfade richtig angibst, damit die ausführbare Datei auf diese Dateien zugreifen kann.
Wie kann ich der ausführbaren Datei ein eigenes Symbol hinzufügen?
Du kannst deiner ausführbaren Datei ein eigenes Symbol hinzufügen, indem du eine .ico-Datei angibst. Für PyInstaller nimm das Flag „ --icon “ und gib dann den Pfad zu deiner .ico-Datei an. In auto-py-to-exe kannst du den Pfad zum Symbol im Feld „Icon“ in der Benutzeroberfläche einstellen. Nuitka unterstützt auch das Flag „ --windows-icon-from-ico “. Beachte, dass die Icon-Datei im .ico-Format sein muss.
Warum ist meine ausführbare Datei so groß und wie kann ich sie verkleinern?
Ausführbare Dateien können alle Abhängigkeiten, Bibliotheken und den Python-Interpreter enthalten, was sie ziemlich groß machen kann. Um die Größe zu verringern:
- Benutze die Option „
--onefile” in PyInstaller oder Nuitka, um alles in einer einzigen Datei zu packen. - Schmeiß unnötige Bibliotheken raus, indem du die Option „
--exclude-module“ in PyInstaller oder Nuitka benutzt. - Du kannst Tools wie UPX nutzen, um die fertige ausführbare Datei zu komprimieren (funktioniert mit PyInstaller und auto-py-to-exe).
- Probier mal Nuitka aus, das macht normalerweise 20–30 % kleinere ausführbare Dateien als PyInstaller.
Kann ich eine ausführbare Datei für ein anderes Betriebssystem erstellen?
PyInstaller, auto-py-to-exe und Nuitka sind alle nur für bestimmte Plattformen. Um eine ausführbare Datei für ein anderes Betriebssystem zu erstellen, musst du Cross-Compiler-Tools verwenden oder eine virtuelle Maschine oder einen Container für das Zielbetriebssystem einrichten. Um zum Beispiel eine Windows-ausführbare Datei unter Linux zu erstellen, kannst du Wine oder Docker mit einer Windows-Umgebung nutzen.
Was gibt's denn noch außer pyinstaller und auto-py-to-exe?
Andere Tools zum Erstellen von ausführbaren Dateien sind:
- cx_Freeze: Ein Tool, mit dem du auf verschiedenen Plattformen ausführbare Dateien erstellen kannst.
- py2exe: Ein Windows-Tool, mit dem man aus Python-Skripten ausführbare Dateien machen kann.


