Ich dachte, ich hätte gehört, dass py2exe dies kann, aber ich habe es nie herausgefunden. Hat jemand dies erfolgreich gemacht? Kann ich Ihre setup.py-Datei sehen und welche Befehlszeilenoptionen haben Sie verwendet?
Grundsätzlich denke ich daran, dass ich eine einzige ausführbare Datei bekomme, die sich sozusagen in / temp entpackt und ausgeführt wird.
Antworten:
PyInstaller erstellt eine einzelne EXE-Datei ohne Abhängigkeiten. Verwenden Sie die
--onefile
Option. Dazu werden alle erforderlichen gemeinsam genutzten Bibliotheken in die ausführbare Datei gepackt und vor der Ausführung entpackt, wie Sie es beschrieben haben (BEARBEITEN: py2exe verfügt auch über diese Funktion, siehe Mintys Antwort ).Ich benutze die Version von PyInstaller von svn, da die neueste Version (1.3) etwas veraltet ist. Es hat sehr gut für eine App funktioniert, die von PyQt, PyQwt, Numpy, Scipy und ein paar mehr abhängt.
quelle
Die Möglichkeit, dies mit py2exe zu tun, besteht darin, die Option bundle_files in Ihrer Datei setup.py zu verwenden. Für eine einzelne Datei möchten Sie
bundle_files
auf 1 setzen,compressed
auf True und die Option zipfile auf None setzen. Auf diese Weise wird eine komprimierte Datei für die einfache Verteilung erstellt.Hier finden Sie eine ausführlichere Beschreibung der Option bundle_file, die direkt von der py2exe-Site * zitiert wird.
Hier ist ein Beispiel für setup.py:
quelle
windows = [{'script': "single.py"}]
mitconsole = ['single.py']
so einem Doppelklick auf die Datei in einem CMD - Fenster öffnen in Windows würde.Wie im anderen Poster erwähnt, generiert py2exe eine ausführbare Datei + einige zu ladende Bibliotheken. Sie können Ihrem Programm auch einige Daten hinzufügen.
Der nächste Schritt besteht darin, ein Installationsprogramm zu verwenden, um all dies in einem benutzerfreundlichen installierbaren / nicht kristallisierbaren Programm zu verpacken.
Ich habe InnoSetup ( http://www.jrsoftware.org/isinfo.php ) seit mehreren Jahren mit Freude und für kommerzielle Programme verwendet, daher empfehle ich es von Herzen.
quelle
Ich konnte eine einzelne Exe-Datei mit allen in die Exe eingebetteten Ressourcen erstellen. Ich baue auf Fenstern. Das erklärt einige der os.system-Aufrufe, die ich verwende.
Zuerst habe ich versucht, alle meine Bilder in Bitmats und dann alle meine Datendateien in Textzeichenfolgen zu konvertieren. Dies führte jedoch dazu, dass die endgültige Exe sehr, sehr groß war.
Nachdem ich eine Woche lang googelt hatte, fand ich heraus, wie ich das py2exe-Skript an meine Bedürfnisse anpassen kann.
Hier ist der Patch-Link zu SourceForge, den ich eingereicht habe. Bitte poste Kommentare, damit wir ihn in die nächste Distribution aufnehmen können.
http://sourceforge.net/tracker/index.php?func=detail&aid=3334760&group_id=15583&atid=315583
Dies erklärt alle vorgenommenen Änderungen. Ich habe einfach eine neue Option zur Setup-Zeile hinzugefügt. Hier ist meine setup.py.
Ich werde versuchen, es so gut wie möglich zu kommentieren. Bitte beachten Sie, dass meine setup.py komplex ist, da ich über den Dateinamen auf die Bilder zugreife. Also muss ich eine Liste speichern, um sie im Auge zu behalten.
Dies ist von einem Bildschirmschoner, den ich machen wollte.
Ich verwende exec, um mein Setup zur Laufzeit zu generieren. Es ist einfacher, es so auszuschneiden und einzufügen.
Nervenzusammenbruch
script = py script Ich möchte mich an eine Exe wenden
icon_resources = das Symbol für die Exe
file_resources = Dateien, die ich in die exe einbetten möchte
other_resources = eine Zeichenfolge, die in die exe eingebettet werden soll, in diesem Fall eine Dateiliste.
options = py2exe Optionen zum Erstellen aller Elemente in einer exe-Datei
bitmap_strings = eine Liste der einzuschließenden Dateien
Bitte beachten Sie, dass file_resources keine gültige Option ist, bis Sie Ihre py2exe.py-Datei wie im obigen Link beschrieben bearbeiten.
Das erste Mal, dass ich versucht habe, Code auf dieser Seite zu posten, wenn ich es falsch verstehe, flamme mich nicht.
ok, das ist es für die setup.py jetzt brauchte die Magie den Zugriff auf die Bilder. Ich habe diese App ohne py2exe entwickelt und später hinzugefügt. Sie sehen also den Zugriff für beide Situationen. Wenn der Bildordner nicht gefunden werden kann, wird versucht, die Bilder aus den exe-Ressourcen abzurufen. Der Code wird es erklären. Dies ist Teil meiner Sprite-Klasse und verwendet einen DirectX. Sie können jedoch jede gewünschte API verwenden oder einfach auf die Rohdaten zugreifen. spielt keine Rolle.
Fragen waren frei zu stellen.
quelle
\'file_resources': [('txt2.txt')]
Fehler (die Datei, die ich in meine EXE-Datei einbetten möchte, heißt txt2 und ist eine TXT-Datei )Sie sollten wie zuvor erwähnt ein Installationsprogramm erstellen. Obwohl es auch möglich ist, py2exe alles in einer einzigen ausführbaren Datei bündeln zu lassen, indem Sie die Option bundle_files auf 1 und das Schlüsselwortargument zipfile auf None setzen, empfehle ich dies nicht für PyGTK-Anwendungen.
Dies liegt daran, dass GTK + versucht, seine Datendateien (Lokale, Themen usw.) aus dem Verzeichnis zu laden, aus dem es geladen wurde. Sie müssen also sicherstellen, dass das Verzeichnis Ihrer ausführbaren Datei auch die von GTK + verwendeten Bibliotheken und die Verzeichnisse lib, share und etc aus Ihrer Installation von GTK + enthält. Andernfalls treten Probleme beim Ausführen Ihrer Anwendung auf einem Computer auf, auf dem GTK + nicht systemweit installiert ist.
Weitere Informationen finden Sie in meinem Handbuch zu py2exe für PyGTK-Anwendungen . Außerdem wird erklärt, wie alles außer GTK + gebündelt wird.
quelle
Mir wurde gesagt, dass bbfreeze eine einzelne Datei .EXE erstellt und neuer als py2exe ist.
quelle
Versuchen Sie, c_x einzufrieren , um einen guten Standalone zu erstellen
quelle
Ich habe kürzlich py2exe verwendet, um eine ausführbare Datei für die Nachprüfung zum Senden von Bewertungen an ReviewBoard zu erstellen.
Dies war die setup.py, die ich verwendet habe
Es wurde ein Verzeichnis erstellt, das die exe-Datei und die benötigten Bibliotheken enthält. Ich glaube nicht, dass es möglich ist, mit py2exe nur eine einzige EXE-Datei abzurufen. Wenn Sie dies benötigen, müssen Sie zuerst py2exe und dann eine Art Installationsprogramm verwenden, um die endgültige ausführbare Datei zu erstellen.
Eine Sache, auf die Sie achten müssen, ist, dass alle Eidateien, die Sie in Ihrer Anwendung verwenden, entpackt werden müssen, andernfalls kann py2exe sie nicht enthalten. Dies wird in den py2exe-Dokumenten behandelt.
quelle
Nein, es gibt Ihnen keine einzige ausführbare Datei in dem Sinne, dass Sie danach nur noch eine Datei haben - aber Sie haben ein Verzeichnis, das alles enthält, was Sie zum Ausführen Ihres Programms benötigen, einschließlich einer exe-Datei.
Ich habe heute gerade diese setup.py geschrieben . Sie müssen nur aufrufen
python setup.py py2exe
.quelle