Skip to content

Python in EXE umwandeln: Runcell, PyInstaller, Nuitka und cx_Freeze

Aktualisiert am

Python in eine EXE umwandeln: zuerst mit dem Browser-Tool von Runcell, danach PyInstaller, Nuitka und cx_Freeze im Vergleich. Mit lauffähigem Beispiel und Befehlen für Windows.

Um Python in eine EXE umzuwandeln, starten Sie mit dem Python-zu-EXE-Konverter von Runcell (opens in a new tab). Fügen Sie eine .py-Datei, einen Projektordner oder ein ZIP hinzu, wählen Sie das Skript, das Ihre App startet, prüfen Sie die Abhängigkeiten und klicken Sie auf Build Windows EXE. Laden Sie das Ergebnis herunter und geben Sie es an Windows-Nutzer weiter, die kein Python installiert haben.

Eine EXE packt Ihr Programm mit der Laufzeitumgebung und den Dateien zusammen, die es braucht. Wer script.py in script.exe umbenennt, erreicht das nicht. Diese Anleitung zeigt zuerst Runcell, erklärt, wie ein Browser die Binärdatei erzeugt, und liefert die Befehle für drei lokale Packaging-Tools. Runcell ist ein Produkt von Kanaries, und dies ist unser empfohlener Weg im Browser.

Die passende Methode für Python zu EXE wählen

MethodeWählen Sie sie, wennWo Sie bauen
Runcell (opens in a new tab), unsere erste WahlSie ein Konsolenskript (Kommandozeile) oder ein Konsolenprojekt haben und eine Windows-x64-EXE wollen, ohne einen Packager zu installierenIm Browser, auf Ihrem Gerät
PyInstallerSie einen Python-Befehl wollen, der einen Ordner oder eine einzelne ausführbare Datei erzeugt, oder eine GUI-App (Tkinter, PySide/PyQt) verpackenIn einer Windows-Python-Umgebung für einen Windows-Build
NuitkaSie Python kompilieren und eine native Compiler-Toolchain einrichten wollenIn einer Windows-Python-Umgebung plus einem unterstützten C-Compiler
cx_FreezeSie einen Anwendungsordner verteilen und dessen Build-Konfiguration pflegen wollenIn einer Windows-Python-Umgebung für einen Windows-Build

Die Befehle unten verwenden Windows PowerShell. Nur bei den lokalen Methoden richten Sie diese Packaging-Tools selbst ein.

Methode 1: Python mit Runcell in eine EXE umwandeln

Mit einem kleinen, reproduzierbaren Skript beginnen

Speichern Sie dieses Beispiel als receipt.py. Es gibt einen Kassenbon aus, berechnet die Summe und wartet auf Enter, damit ein per Doppelklick geöffnetes Konsolenfenster offen bleibt. Es hat keine Abhängigkeiten von Drittanbietern und keine zusätzlichen Dateien.

items = {"Notebook": 19.50, "Cable": 8.25, "Stand": 12.25}
 
print("Receipt")
for name, price in items.items():
    print(f"{name}: ${price:.2f}")
 
print(f"Total: ${sum(items.values()):.2f}")
input("Press Enter to close...")

Wenn Python bereits installiert ist, prüfen Sie den Quellcode, bevor Sie ihn verpacken:

python receipt.py

Die Summe sollte Total: $40.00 lauten. Drücken Sie Enter, um das Skript zu beenden. Wenn das Ihr erstes Skript ist, erklärt unsere Anleitung zum Ausführen von Python-Skripten, wie Sie das Terminal einrichten.

Projekt hinzufügen und bauen

  1. Öffnen Sie den Python-zu-EXE-Konverter von Runcell (opens in a new tab) und gehen Sie auf der Seite zum Konverter.
  2. Wählen Sie Ihre Datei receipt.py. Bei einer bestehenden Konsolenanwendung wählen Sie stattdessen den Projektordner oder das ZIP, einschließlich der Module und Ressourcen, die sie nutzt.
  3. Legen Sie receipt.py als Einstiegsskript fest. In einem größeren Projekt ist das das Skript, mit dem Sie die Anwendung normalerweise starten, etwa main.py.
  4. Prüfen Sie die erkannten Imports, Abhängigkeiten und eingebundenen Dateien. Das Kassenbon-Beispiel braucht keine zusätzlichen Pakete. Bei Ihrer eigenen App prüfen Sie, ob die benötigten Assets und Paketversionen zu dem Projekt passen, das Sie verteilen wollen. Die Laufzeitumgebung von Runcell ist Python 3.14, daher braucht jedes Paket ein Wheel, das unter Windows mit Python 3.14 funktioniert (ein cp314-, abi3- oder reines Python-Wheel).
  5. Klicken Sie auf Build Windows EXE und laden Sie die erzeugte ausführbare Datei herunter. Öffnen Sie sie unter Windows und prüfen Sie die Ausgabe des Kassenbons, bevor Sie sie weitergeben.

Bei unserem Test im Browser hat Runcell receipt.exe erzeugt und heruntergeladen. Laut Datei-Header ist es eine ausführbare Windows-x64-Datei. Unter Windows haben wir diese EXE nicht ausgeführt.

Bei Projekten mit mehreren Dateien behalten Sie die Ordnerstruktur bei. Eine Vorlage, die aus templates/invoice.html geladen wird, muss unter dem Pfad eingebunden sein, den Ihre Anwendung erwartet.

Wie ein Browser eine Windows-EXE erzeugt

Die eigene Packaging-Engine von Runcell kombiniert einen vorkompilierten Windows-Launcher, eine Python-Laufzeitumgebung, Ihre Projektdateien und die Abhängigkeiten. Daraus setzt sie auf Ihrem Gerät eine herunterladbare .exe zusammen. Die Windows-Komponenten sind bereits kompiliert, deshalb kann der Browser die fertige Binärdatei bauen, ohne lokal einen Windows-Compiler auszuführen.

Der Ablauf hat zwei getrennte Phasen:

Your Python project + dependencies
                +
Python runtime + precompiled Windows launcher
                |
                v
Runcell assembles the EXE in your browser
                |
                v
Download the file, then run it on Windows

Eine Datei zu erzeugen und sie auszuführen sind zwei verschiedene Vorgänge: Der Browser setzt die ausführbare Datei zusammen, Windows führt die fertige Anwendung aus. Die Erklärung des Mechanismus bei Runcell (opens in a new tab) beschreibt diesen Packaging-Weg.

Was auf Ihrem Gerät bleibt

Runcell baut die EXE in Ihrem Browser. Importiert Ihr Projekt ein Modul, das die eingebettete Windows-Laufzeitumgebung nicht enthält, meldet der Konverter das vor dem Build. Entfernen Sie dann diesen Import oder nutzen Sie einen der lokalen Packager unten.

Ihr Quellcode und Ihre Zugangsdaten bleiben während des Builds auf Ihrem Gerät. Die fertige EXE enthält Ihren Code, packen Sie also keine Zugangsdaten oder Schlüssel hinein, die Sie nicht weitergeben würden.

Methode 2: Lokal mit PyInstaller bauen

PyInstaller (opens in a new tab) sammelt Ihr Skript, seine Imports und die Python-Laufzeitumgebung in einer verteilbaren Anwendung. Für eine Windows-EXE führen Sie PyInstaller unter Windows aus. Es baut für das Betriebssystem, auf dem es läuft.

Öffnen Sie PowerShell in dem Ordner, der receipt.py enthält. Legen Sie eine virtuelle Umgebung an und installieren Sie PyInstaller darin. Wenn Sie Python von python.org installiert haben, funktioniert der Launcher py auch dann, wenn python nicht im PATH liegt, und wenn Sie das Python der Umgebung direkt aufrufen, sparen Sie sich das Aktivieren:

py -m venv .venv
.\.venv\Scripts\python.exe -m pip install pyinstaller
.\.venv\Scripts\python.exe -m PyInstaller --onefile receipt.py

Das Ergebnis ist dist\receipt.exe. Führen Sie es in PowerShell aus, um die Ausgabe zu sehen:

.\dist\receipt.exe

Für Ihr eigenes Projekt installieren Sie vor dem Build dessen Abhängigkeiten in dieselbe Umgebung. Gibt es eine requirements.txt, nutzen Sie .\.venv\Scripts\python.exe -m pip install -r requirements.txt.

Der Aufruf -m PyInstaller, bei dem die Groß- und Kleinschreibung zählt, ist in der Installationsanleitung (opens in a new tab) dokumentiert. So bleiben der Packager und Ihre Abhängigkeiten in derselben Python-Umgebung.

Konsole, GUI oder Ordner-Build wählen

Behalten Sie für receipt.py den Konsolenmodus bei, weil das Skript print() und input() nutzt. Bei einer grafischen Anwendung, die die gesamte Interaktion in eigenen Fenstern abwickelt, blendet --windowed die Konsole aus. Beginnen Sie mit --onedir, wenn Sie die Anwendung und die zugehörigen Dateien in einem Ordner prüfen wollen, und nutzen Sie danach --onefile für einen einzelnen Download. Details stehen in der Referenz der PyInstaller-Optionen (opens in a new tab).

Um einen Ordner assets einzubinden, geben Sie ihn ausdrücklich an:

.\.venv\Scripts\python.exe -m PyInstaller --onefile --add-data "assets:assets" receipt.py

Das Beispiel setzt voraus, dass Sie einen Ordner assets angelegt haben. Für mitgelieferte, nur lesbare Dateien lösen Sie Pfade relativ zu __file__ auf, wie im Runtime-Leitfaden von PyInstaller (opens in a new tab) beschrieben. Unsere Anleitung zu Python pathlib erklärt die Pfadoperationen.

Methode 3: Mit Nuitka kompilieren und verpacken

Nuitka (opens in a new tab) kompiliert Python und kann verteilbare Anwendungen erzeugen. Wählen Sie es, wenn Sie einen Compiler-basierten Build selbst steuern wollen. Sie brauchen einen unterstützten C-Compiler; unter Windows nennt das Handbuch unter anderem Visual Studio 2022 oder neuer. Laut Handbuch funktioniert MinGW64 mit Python 3.13 oder neuer nur mit einem experimentellen Flag. Mit aktuellem Python sollten Sie also die Visual Studio Build Tools installieren.

Installieren Sie Nuitka in einer gleichartigen virtuellen Umgebung und fordern Sie den Onefile-Modus an:

py -m venv .venv
.\.venv\Scripts\python.exe -m pip install nuitka
.\.venv\Scripts\python.exe -m nuitka --mode=onefile receipt.py

Unter Windows ist die erwartete Ausgabe receipt.exe. Nutzen Sie --mode=standalone, wenn Sie lieber einen Ordner verteilen. Geben Sie einen dieser Modi ausdrücklich an: Der standardmäßige Accelerated-Modus von Nuitka ist nicht dafür gedacht, eine Anwendung auf einen Rechner ohne Python zu verteilen. Für die Einrichtung des Compilers und paketspezifische Optionen folgen Sie dem offiziellen Handbuch.

Methode 4: Mit cx_Freeze einen Anwendungsordner erstellen

cx_Freeze (opens in a new tab) erzeugt normalerweise einen Ordner, der die ausführbare Datei und die zugehörigen Bibliotheken enthält. Wählen Sie es, wenn Sie einen konfigurierten Anwendungs-Build pflegen und den gesamten Ordner verteilen wollen.

Installieren Sie das Paket in einer gleichartigen virtuellen Umgebung und starten Sie den Kommandozeilen-Builder:

py -m venv .venv
.\.venv\Scripts\python.exe -m pip install cx-Freeze
.\.venv\Scripts\cxfreeze.exe --script receipt.py --target-dir dist

Das folgt der aktuellen Befehlsreferenz von cxfreeze (opens in a new tab). Verteilen Sie den kompletten Ordner dist mit seinen Bibliotheken, nicht nur die EXE. Für wiederholbare Projekteinstellungen unterstützt cx_Freeze außerdem pyproject.toml und ein Python-Setup-Skript.

Das Ergebnis vor der Weitergabe prüfen

Führen Sie die Anwendung auf einem Windows-Rechner aus, der dem Setup Ihrer Empfänger entspricht. Prüfen Sie bei diesem Beispiel die Preise der Artikel, die Summe $40.00 und die Enter-Abfrage. Ein Rechner ohne separate Python-Installation ist ein guter Test dafür, ob Sie Laufzeitumgebung und Abhängigkeiten mitgeliefert haben.

Bei einer größeren App testen Sie die Aktion, die ein Empfänger tatsächlich braucht, etwa eine Eingabedatei auswählen und einen Bericht speichern. Schließt sich ein Konsolenfenster sofort wieder, starten Sie die EXE aus PowerShell, um die Fehlermeldung zu lesen. Fehlt ein Bild oder eine Vorlage, prüfen Sie sowohl die verpackten Dateien als auch den Pfad, über den sie geladen werden. Dynamische Imports müssen Sie mit den Optionen des lokalen Packagers eventuell ausdrücklich einbinden.

Unsignierte EXEs aus jedem dieser Tools können beim ersten Öffnen eine Warnung von Microsoft Defender SmartScreen auslösen. Der Empfänger wählt dann More info und anschließend Run anyway (auf einem deutschen Windows: „Weitere Informationen“ und „Trotzdem ausführen“).

Häufige Fragen

Wie wandle ich eine .py-Datei in eine .exe um, ohne einen Packager zu installieren?

Nutzen Sie den Python-zu-EXE-Konverter von Runcell (opens in a new tab). Wählen Sie Ihre Python-Datei, Ihren Ordner oder Ihr ZIP, legen Sie das Einstiegsskript fest, prüfen Sie die Abhängigkeiten und bauen Sie die Windows-EXE im Browser.

Kann ein Browser wirklich eine ausführbare Windows-Datei erzeugen?

Ja. Runcell setzt im Browser vorkompilierte Windows-Komponenten, eine Python-Laufzeitumgebung und Ihre Anwendung zu einer EXE zusammen. Diese Datei laden Sie herunter und führen sie unter Windows aus. Um die Binärdatei zu erzeugen, muss der Browser die Windows-Anwendung nicht ausführen.

Muss auf dem Rechner, der die EXE ausführt, Python installiert sein?

Nein. Eine separate Python-Installation ist nicht nötig, wenn Sie die Anwendung mit ihrer Laufzeitumgebung und den benötigten Abhängigkeiten verteilen. Runcell packt die Laufzeitumgebung beim Packaging mit ein. Bei einem Ordner-Build mit einem lokalen Tool geben Sie den kompletten Ausgabeordner weiter.

Wie lautet der PyInstaller-Befehl für eine einzelne EXE?

Führen Sie python -m PyInstaller --onefile receipt.py in der Windows-Umgebung aus, in der PyInstaller und die Abhängigkeiten Ihres Projekts installiert sind. Die Ausgabe des Beispiels ist dist\receipt.exe.

Quellen und Tests

Der Runcell-Ablauf und der Packaging-Mechanismus folgen dem öffentlichen Produktleitfaden (opens in a new tab), geprüft am 4. November 2026. Die lokalen Build-Befehle folgen der offiziellen Dokumentation, die bei jeder Methode verlinkt ist. Wir haben das Kassenbon-Beispiel auf macOS ausgeführt, es im Live-Konverter von Runcell ausgewählt, receipt.exe erzeugt und heruntergeladen und den Windows-x64-PE-Header geprüft. Auf macOS haben wir das Kassenbon-Skript außerdem mit PyInstaller 6.22.3 (--onefile) und cx_Freeze 8.7.4 gebaut, um diese Befehle zu prüfen, und die Modusoptionen von Nuitka mit der Ausgabe der Hilfe abgeglichen. Für diesen Artikel wurde keine EXE unter Windows ausgeführt.

Weiterführende Anleitungen