Ich möchte eine einzelne ausführbare Datei aus meinem Python-Projekt erstellen. Ein Benutzer sollte es herunterladen und ausführen können, ohne dass Python installiert sein muss. Wenn ich nur ein Paket verteilen würde, könnte ich Pip, Wheel und PyPI verwenden, um es zu erstellen und zu verteilen. Dies setzt jedoch voraus, dass der Benutzer über Python verfügt und weiß, wie Pakete installiert werden. Was kann ich verwenden, um eine eigenständige ausführbare Datei aus einem Python-Projekt zu erstellen?
python
compilation
exe
packaging
software-distribution
ShadowFlame
quelle
quelle
pdb
) haben keinen einfachen Zugriff auf die ausgeführten Dateienpy2exe
(keine Ahnung von den anderen) enthalten keine.py
Dateien, sodass Sie keine Quellzeilen in Stapelspuren sehen.Antworten:
Hier sind einige gebräuchliche. Sofern nicht ausdrücklich angegeben, werden alle unten aufgeführten Projekte ab meiner letzten Bearbeitung (Januar 2020) aktiv gepflegt.
Ich habe auch Links zu den jeweiligen Websites, Repos und PyPi-Listen hinzugefügt, falls Sie selbst überprüfen möchten, wie oft sie aktualisiert wurden.
Sofern nicht anders angegeben, erzeugen alle unten aufgeführten Programme eine Exe speziell für das Betriebssystem, auf dem sie ausgeführt werden. Wenn Sie beispielsweise Pyinstaller unter Windows ausführen, wird eine Windows-Exe erstellt, während Sie Pyinstaller unter Linux ausführen, wird eine Linux-Exe erstellt. Wenn Sie eine Exe für mehrere Betriebssysteme erstellen möchten, müssen Sie die Verwendung virtueller Maschinen oder die Verwendung von etwas wie Wine prüfen .
Die folgenden Programme funktionieren alle ähnlich - sie bündeln Python und Ihr Programm und kombinieren sie effektiv, um eine ausführbare Datei zu erstellen.
PyInstaller:
cx_Freeze:
py2app:
Hinweis: Frühere Versionen dieses Beitrags enthielten Zuschreibungen für py2exe ( Repo ) und bbfreeze ( Repo ). Beide Projekte wurden aus dieser Liste gestrichen: Sie haben seit mehreren Jahren kaum oder gar keine Aktivitäten gesehen und scheinen völlig unbeaufsichtigt zu sein. Siehe Bearbeitungsverlauf für die alten Zuschreibungen.
Das ist natürlich nicht die einzige Möglichkeit, Dinge zu tun:
pynsist:
Weitere Hinweise: Pynsist scheint die Bündelung beliebiger Python-Versionen mit Ihrer Anwendung zu unterstützen. Für das Tool selbst ist jedoch Python 3.5+ erforderlich.
Pynsist erstellt ein Windows-Installationsprogramm für Ihr Programm, das Python direkt auf dem Computer des Benutzers installiert, anstatt es mit Ihrem Code zu bündeln, und Verknüpfungen erstellt, die auf Ihr Python-Skript verweisen. Obwohl dieses Programm nur Windows-Installationsprogramme erstellt, können Sie Pynsist anscheinend weiterhin auf Mac- und Linux-Computern ausführen .
Nuitka:
Cython:
Meine persönliche Präferenz ist die Verwendung von PyInstaller, da es für mich am einfachsten war, es in Betrieb zu nehmen, für verschiedene gängige Bibliotheken wie Numpy oder Pygame geeignet ist und eine hervorragende Kompatibilität mit verschiedenen Betriebssystemen und Python-Versionen aufweist.
Ich habe jedoch auch erfolgreich verschiedene Exes mit cx_Freeze ohne allzu große Schwierigkeiten erstellt, daher sollten Sie auch in Betracht ziehen, dieses Programm auszuprobieren.
Ich hatte noch keine Gelegenheit, Pynist, Nuitka oder Cython ausgiebig auszuprobieren, aber sie scheinen ziemlich interessante und innovative Lösungen zu sein. Wenn Sie Probleme mit der ersten Gruppe von Programmen haben, kann es sich lohnen, eines dieser drei Programme auszuprobieren. Da sie grundlegend anders funktionieren als die Programme im Pyinstaller / cx_freeze-Stil, können sie in Fällen mit ungeraden Kanten erfolgreich sein, in denen die erste Gruppe ausfällt.
Insbesondere denke ich, dass Pynist eine gute Möglichkeit ist, das gesamte Problem der Verteilung Ihres Codes zu umgehen: Macs und Linux unterstützen Python bereits nativ, und die Installation von Python unter Windows ist möglicherweise die sauberste Lösung. (Der Nachteil ist nun, dass Sie sich Gedanken über die Ausrichtung auf mehrere Versionen von Python + machen müssen, in denen Bibliotheken installiert werden.)
Nuitka und Cython (nach meiner begrenzten Erfahrung) scheinen ziemlich gut zu funktionieren. Auch hier habe ich sie nicht ausgiebig selbst getestet, und daher ist meine Hauptbeobachtung, dass die Erstellung einer Exe viel länger zu dauern scheint als die Programme im "Freeze" -Stil.
Abgesehen davon ist die Konvertierung Ihres Python-Programms in eine ausführbare Datei nicht unbedingt die einzige Möglichkeit, Ihren Code zu verteilen. Weitere Informationen zu den anderen verfügbaren Optionen finden Sie unter den folgenden Links:
quelle
msvcrxx.dll
, woxx
eine Versionsnummer ist ) , um die .exe laufen zu lassen (oder Benutzer fragen , es selbst zu installieren). Dies ist erforderlich, da Python mit Visual Studio unter Windows erstellt wird.pyinstaller befindet sich noch in der aktiven Entwicklung. Sie können die neuesten Änderungen auf GitHub sehen.
Es unterstützt alle drei Hauptplattformen:
und es unterstützt Python-Versionen 2.6 und 2.7. Python 3 wird nicht unterstützt, es gibt jedoch einen experimentellen Python 3-Zweig .
Aktualisieren
Ab Version 3.2.1 werden Python 2.7, 3.3-3.5 unterstützt
quelle
Bessere Verwendung,
pip install auto-py-to-exe
die eine schöne Benutzeroberfläche mit allen Optionen bietet, die zum Erstellen einer ausführbaren Datei erforderlich sind.Geben Sie nach der Installation einfach
auto-py-to-exe
Ihr Terminal oder Ihre Eingabeaufforderung ein.quelle