Wie kann ich eine .py für Python in .exe konvertieren?

126

Ich versuche, ein ziemlich einfaches Python-Programm in eine ausführbare Datei zu konvertieren und konnte nicht finden, wonach ich gesucht habe. Daher habe ich einige Fragen (ich verwende Python 3.6):

Die Methoden, die ich bisher gefunden habe, sind folgende

  1. Herunterladen einer alten Version von Python und Verwenden pyinstaller/py2exe
  2. Einrichten einer virtuellen Umgebung in Python 3.6, mit der ich 1 ausführen kann.
  3. Laden Sie einen Python to C ++ - Konverter herunter und verwenden Sie diesen.

Hier ist, was ich versucht habe / auf welche Probleme ich gestoßen bin.

  • Ich habe pyinstallervor dem erforderlichen Download davor installiert (pypi-etwas), so dass es nicht funktioniert hat. Nach dem Herunterladen der vorausgesetzten Datei wird sie pyinstallerimmer noch nicht erkannt.
  • Wenn ich eine virtuelle Umgebung in Python 2.7 einrichte, muss Python 2.7 tatsächlich installiert sein?
  • Ebenso funktionieren die einzigen Python-zu-C ++ - Konverter, die ich sehe, nur bis Python 3.5. Muss ich diese Version herunterladen und verwenden, wenn ich dies versuche?
user7396807
quelle
4
Ich bin mir nicht sicher, warum dies abgelehnt wird (möglicherweise, weil Toolempfehlungen für SO nicht aktuell sind), aber diese Frage wird in Zukunft für andere nützlich sein. Ähnliche frühere Fragen wurden nicht als offtopic markiert, z. B. stackoverflow.com/questions/2136837/…
Chris_Rands

Antworten:

127

Schritte zum Konvertieren von .py in .exe in Python 3.6

  1. Installieren Sie Python 3.6 .
  2. Installieren Sie cx_Freeze (öffnen Sie die Eingabeaufforderung und geben Sie ein pip install cx_Freeze.
  3. Installieren Sie idna (öffnen Sie Ihre Eingabeaufforderung und geben Sie ein pip install idna.
  4. Schreiben Sie ein .pyProgramm mit dem Namen myfirstprog.py.
  5. Erstellen Sie eine neue Python-Datei mit dem Namen setup.pyim aktuellen Verzeichnis Ihres Skripts.
  6. setup.pyKopieren Sie in der Datei den folgenden Code und speichern Sie ihn.
  7. Klicken Sie bei gedrückter Umschalttaste mit der rechten Maustaste auf dasselbe Verzeichnis, damit Sie ein Eingabeaufforderungsfenster öffnen können.
  8. Geben Sie in die Eingabeaufforderung ein python setup.py build
  9. Wenn Ihr Skript fehlerfrei ist, gibt es kein Problem beim Erstellen einer Anwendung.
  10. Überprüfen Sie den neu erstellten Ordner build. Es hat einen anderen Ordner. In diesem Ordner finden Sie Ihre Anwendung. Starte es. MAch dich glücklich.

Siehe das Original-Skript in meinem Blog .

setup.py:

from cx_Freeze import setup, Executable

base = None    

executables = [Executable("myfirstprog.py", base=base)]

packages = ["idna"]
options = {
    'build_exe': {    
        'packages':packages,
    },    
}

setup(
    name = "<any name>",
    options = options,
    version = "<any number>",
    description = '<any description>',
    executables = executables
)

BEARBEITEN:

  • Stellen myfirstprog.pySie sicher, dass Sie stattdessen den .pyNamen Ihrer Erweiterungsdatei wie in Schritt 4 erstellt eingeben .
  • Sie sollten jedes imported-Paket in Ihre .pyIn- packagesListe aufnehmen (Beispiel:packages = ["idna", "os","sys"] )
  • any name, any number, any descriptionin - setup.pyDatei sollte nicht gleich bleiben, sollten Sie es entsprechend ändern (zB: name = "<first_ever>", version = "0.11", description = '')
  • Die imported-Pakete müssen installiert sein, bevor Sie Schritt 8 starten .
Maria Irudaya Regilan J.
quelle
10
Gibt es eine Möglichkeit, es "eigenständig" ausführbar zu machen? Wenn ich so vorgehe, wie Sie es in Ihrem Artikel empfohlen haben, erhalte ich den Ordner exe.win.32-3.6. Das ist voll von unterstützenden Dateien und Verzeichnissen (wie 'Sammlungen /', 'E-Mail' usw.). Sehr schrecklich für einen einfachen Druck ('Hallo'). Ich möchte eine einzelne ausführbare Datei erstellen, die so wie sie ist auf einem anderen Computer ausgeführt wird, ohne dass andere Dateien erforderlich sind. Gibt es dafür eine Build-Option?
FanaticD
2
@ FanaticD Python ist nicht die beste Wahl. Cython (ein Albtraum, um sich an die Arbeit zu machen) oder Nuitka wären die beste Wahl. Aber diese zum Laufen zu bringen, ist eine Leistung für sich.
Tetora
Würde dies in Python 3.5.3 funktionieren? (Die letzte stabile Version auf Debian 9 Stretch).
Gerard
Wie würde ich importieren from sklearn.externals import joblib? wie in der Bearbeitung erwähnt, Schritt 2.
Jack
77

Python 3.6 wird von PyInstaller unterstützt.

Öffnen Sie ein Cmd-Fenster in Ihrem Python-Ordner (öffnen Sie ein Befehlsfenster und verwenden Sie cdoder halten Sie die Umschalttaste gedrückt, klicken Sie mit der rechten Maustaste darauf im Windows Explorer und wählen Sie "Befehlsfenster hier öffnen"). Dann einfach eintreten

pip install pyinstaller

Und das ist es.

Die einfachste Möglichkeit, es zu verwenden, ist die Eingabe an der Eingabeaufforderung

pyinstaller file_name.py

Weitere Informationen zur Verwendung finden Sie in dieser Frage .

Rodrigo Nascimento
quelle
4
gerade mit Python 3.7.0 getestet. Viele Warnungen zwar, aber erfolgreich kompiliert und unter Windows 10 ausgeführt
Ole_S
2
Ich habe ein Programm mit Python 3.5.0 und ohne Warnungen oder Fehler kompiliert und es läuft wie erwartet
Menotdan
Weiß jemand, worauf es bei einem Pyinstaller ankommt? Funktioniert eine auf Windows 10 basierende Exe in Windows 8? oder funktioniert Windows 10 32-Bit-Build in Windows 10 64-Bit-Systemen?
Derik81
27

Auf GitHub gibt es ein Open-Source-Projekt namens auto-py-to-exe . Eigentlich wird PyInstaller auch nur intern verwendet, aber da es eine einfache GUI hat, die PyInstaller steuert, kann es eine komfortable Alternative sein. Im Gegensatz zu anderen Lösungen kann auch eine eigenständige Datei ausgegeben werden. Sie bieten auch ein Video zeigt, wie es eingerichtet wird.

GUI:

Auto Py zu Exe

Ausgabe:

Ausgabe

Gab
quelle
2
Sie sollten erwähnt haben, dass MVC ++ erforderlich ist. Fehler: Microsoft Visual C ++ 14.0 ist erforderlich.
SKR
3
Ich finde keinen Wert darin, da es auf Pyinstaller basiert und wenn Sie einen Fehler in Pyinstaller bekommen, werden Sie es auch hier haben!
CV_passionate
9

Ich kann Ihnen nicht sagen, was am besten ist, aber ein Tool, das ich in der Vergangenheit erfolgreich verwendet habe, war cx_Freeze . Sie wurden kürzlich (am 7. Januar '17) auf Version 5.0.1 aktualisiert und unterstützen Python 3.6.

Hier ist das pypi https://pypi.python.org/pypi/cx_Freeze

Die Dokumentation zeigt, dass es je nach Ihren Anforderungen mehrere Möglichkeiten gibt. http://cx-freeze.readthedocs.io/en/latest/overview.html

Ich habe es noch nicht ausprobiert, daher werde ich auf einen Beitrag verweisen, in dem die einfache Vorgehensweise besprochen wurde. Einige Dinge können sich jedoch geändert haben oder auch nicht.

Wie verwende ich cx_freeze?

Gerschel
quelle
11
Erwähnenswert ist, dass cxFreeze keine ausführbaren Dateien für einzelne Dateien ausführt.
Eddie Hart
7

Ich habe Nuitka und PyInstaller mit meinem Paket PySimpleGUI verwendet.

Nuitka Es gab Probleme beim Kompilieren von tkinter mit Nuikta. Einer der Projektmitarbeiter entwickelte ein Skript, mit dem das Problem behoben wurde.

Wenn Sie tkinter nicht verwenden, funktioniert es möglicherweise "nur" für Sie. Wenn Sie tkinter verwenden, sagen Sie es und ich werde versuchen, das Skript und die Anweisungen zu veröffentlichen.

PyInstaller Ich verwende 3.6 und PyInstaller funktioniert hervorragend! Der Befehl, mit dem ich meine exe-Datei erstelle, lautet:

pyinstaller -wF myfile.py

Das -wF erstellt eine einzelne EXE-Datei. Da alle meine Programme eine GUI haben und ich nicht möchte, dass das Befehlsfenster angezeigt wird, wird das Befehlsfenster durch die Option -w ausgeblendet.

Dies ist fast so, als würde ein Winforms-Programm ausgeführt, das in Python geschrieben wurde.

[Update 20-Jul-2019]

Es gibt eine PySimpleGUI GUI-basierte Lösung, die PyInstaller verwendet. Es verwendet PySimpleGUI. Es heißt pysimplegui-exemaker und kann per Pip installiert werden.

pip install PySimpleGUI-exemaker

So führen Sie es nach der Installation aus:

python -m pysimplegui-exemaker.pysimplegui-exemaker

MikeyB
quelle
5

Jetzt können Sie es mit PyInstaller konvertieren. Ich arbeite sogar mit Python 3.

Schritte:

  1. Starten Sie Ihren PC
  2. Öffnen Sie die Eingabeaufforderung
  3. Befehl eingeben pip install pyinstaller
  4. Verwenden Sie nach der Installation den Befehl 'cd', um zum Arbeitsverzeichnis zu gelangen.
  5. Führen Sie den Befehl aus pyinstall <filename>
Tejas Joshi
quelle
Warum stimmen die Leute das ab? Ich poste diese Antwort nur, um zu helfen.
Tejas Joshi
3
weil es unter Python 3.6 nicht funktioniert, das OP speziell für ihn verwendet hat.
Uri
Pyinstaller sollte jetzt funktionieren. Wenn nicht, dann sag es mir in den Kommentaren
Tejas Joshi