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:
- Links : Website || Repo || PyPi
- Unterstützt : Python 2.7 und Python 3.4 - 3.7 unter Windows, Mac und Linux.
cx_Freeze:
- Links: Website || Repo || PyPi
- Unterstützt: Python 2.7 und 3.5 - 3.8 unter Windows, Mac und Linux.
py2app:
- Links: Website || Repo || PyPi
- Unterstützt: Python 2.7 und 3.3 (?) - 3.7 (?) Nur auf dem Mac.
- Hinweis: Bei meiner letzten Bearbeitung konnte ich den genauen Bereich der von pyapp unterstützten Python-Versionen nicht endgültig bestimmen. In der neuesten Version wird die Unterstützung von Python 3.7 erwähnt.
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:
- Links: Website || Repo || PyPi
- Unterstützt: Alle Python-Versionen? Hinweis - erstellt nur Windows-Installationsprogramme .
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:
- Links: Website || Repo (Github-Spiegel) || PyPi
- Unterstützt: Python 2.6 - 2.7 und Python 3.3 - 3.7 unter Windows, Mac und Linux.
- Weitere Hinweise: Nuitka kompiliert Ihren Python-Code buchstäblich und erstellt eine Exe (im Gegensatz zu den anderen Projekten, die einfach Python enthalten), um Ihren Code zu beschleunigen. Als Nebeneffekt erhalten Sie auch eine praktische Exe, die Sie verteilen können. Beachten Sie, dass auf Ihrem System ein C ++ - Compiler verfügbar sein muss.
Cython:
- Links: Website || Repo || PyPi
- Unterstützt: Python 2.6 - 2.7 und Python 3.2 - 3.8 unter Windows, Mac und Linux.
- Weitere Hinweise: Cython ähnelt Nuitka darin, dass es sich um einen Python-Compiler handelt. Anstatt Ihren Code direkt zu kompilieren, wird er jedoch zu C kompiliert. Sie können dann diesen C-Code nehmen und Ihren Code in eine Exe verwandeln . Auf Ihrem System muss ein C-Compiler verfügbar sein.
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: