Wie kompilieren Sie alle Ressourcen in eine ausführbare Datei?
Habe ich schon schrieb GTK-Anwendung mit python.
Alle grafischen Benutzer-Schnittstelle ist in der glade-Datei, und es gibt einige Bilder verwendet. Ich möchte meine Anwendung kompilieren in die Ausführbare Datei. Dafür bin ich mit PyInstaller compiler und UPX packer.
Ich habe getan, was Handbuch sagt:
python Configure.py
python Makespec.py --onefile --windowed --upx /path/to/yourscript.py
python Build.py /path/to/yourscript.spec
PyInstaller funktioniert perfekt, und erstellen Sie eine exe-Datei. Aber, um meine Anwendung richtig funktioniert, habe ich zum kopieren meiner glade und Bild - Dateien in exe-Ordner.
Gibt es eine Möglichkeit, zu kompilieren diese Dateien in ausführbare?
Habe ich bearbeitet meine spec-Datei in verschiedener Weise, aber ich kann nicht erreichen, was ich will. Spec-Datei unten kopiert nur die Datei-Verzeichnis, aber nicht kompilieren in die ausführbare Datei
# -*- mode: python -*-
a = Analysis([os.path.join(HOMEPATH,'support\\_mountzlib.py'), os.path.join(HOMEPATH,'support\\useUnicode.py'), 'r:\\connection\\main.py'],
pathex=['C:\\Documents and Settings\\Lixas\\Desktop\\pyinstaller-1.5-rc1'])
pyz = PYZ(a.pure)
exe = EXE( pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
name=os.path.join('dist', 'NetworkChecker.exe'),
debug=False,
strip=False,
upx=True,
console=False,
icon='r:\\connection\\ikona.ico' )
coll = COLLECT(
exe,
[('gui.glade', 'r:\\connection\\gui.glade', 'DATA')],
[('question16.png', 'r:\\connection\\question16.png', 'DATA')],
# a.binaries,
# strip=False,
upx=True,
name='distFinal')
Wünsche ich mir nur aus einer ausführbaren Datei alles inklusive in
InformationsquelleAutor Lixas | 2011-07-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
PyInstaller hat erlauben, Sie zu bündeln Sie alle Ihre Ressourcen in die exe-Datei, ohne die trickyness drehen Ihre Daten-Dateien in .py-Dateien-Ihre SAMMELN-Objekt korrekt zu sein scheint, der schwierige Schritt ist der Zugriff auf diese Dateien zur Laufzeit. PyInstaller wird, entpacken Sie Sie in ein temporäres Verzeichnis und sagen Ihnen, wo Sie mit der _MEIPASS2 variable. Um die Datei-Pfade in die Entwicklung und verpackt-Modus, ich benutze diese:
sys._MEIPASS
Können Sie uns sagen, wie Sie, ändern Sie diesen code, damit es funktioniert?
Siehe dieser beantworten.
Sie können in der Lage sein zu helfen, meine problem.
InformationsquelleAutor Shish
Mit ein paar änderungen, können Sie beinhalten alles, was in Ihren Quellcode und damit in die ausführbare Datei.
Wenn Sie
gdk-pixbuf-csource
auf Ihre Bild-Dateien können Sie konvertieren Sie Sie in Zeichenfolgen, die Sie dann Last mitgtk.die gdk.pixbuf_new_from_inline()
.Können Sie auch Ihre Glade-Datei als string in das Programm zu laden und dann mit
gtk.Builder.add_from_string()
.+1 weil es im Lichte der Kommentare, die OP dieses macht es möglich, zu erhalten, was er wollte. Ich vermisse immer noch, zu verstehen, was die Vorteile alles in einem einzigen runtime-Datei sind, obwohl... aber das ist nicht ein problem deiner Antwort ist, natürlich! 🙂
Sie können in der Lage sein zu helfen, meine problem.
InformationsquelleAutor ptomato
Streng genommen: Nein, denn Sie kompilieren Quellcode, während die glade-Datei ist XML und die Bilder sind binäre Daten. Was Sie normalerweise tun würde, ist das erstellen eines installer (d.h. in einem selbstentpackenden Archiv, der Ort, die verschiedenen Dateien in die richtigen Verzeichnisse, wenn der installer lief).
EDIT: Wenn Ihr Anliegen ist einfach, eine eins-Datei ausführbar (es geht also nicht um "kompilieren", aber wirklich über die Anzahl der Dateien, die dauerhaft auf dem geschrieben Dateisystem) könnten Sie versuchen, zu verwenden dieses Skript basierend auf py2exe. Was es tut, ist, um temporäre Dateien erstellen jedes mal, wenn das Programm gestartet wird, entfernen Sie Sie, sobald die Ausführung abgeschlossen ist.
EDIT2: Anscheinend was Sie fordern ist auch möglich unter PyInstaller. Aus der Dokumentation:
Ich weiß wirklich nicht verstehen, warum Sie wollen, verfolgen diesen Weg (ich bin nicht kritisieren: ich bitte Sie um Klärung, da ich nicht sehen kann, seine Vorteile für die Nutzer, während ich sehen kann, seine Nachteile). Aber wenn das, was Ihnen wichtig ist Anzahl von Dateien und nicht die Tatsache, dass Sie ausführbar sind, siehe mein edit, wo ich stehen ein Skript, das tut ziemlich viel, was Sie gefragt, wenn ich die Dokumentation richtig.
Sie können in der Lage sein zu helfen, meine problem.
InformationsquelleAutor mac