2016-04-11 13 views
0

kann nicht herausfinden, wie benutzerdefinierte Ressourcen in meine ausführbaren Datei zu packen, fand ich dieses Stück Info, https://groups.google.com/forum/#!msg/pyinstaller/HcTTyFlPJHA/kqd4wnm7JhkJPyinstaller- einschließlich Vermögenswerte in ausführbaren

Mein Vermögen Ordner enthält Bilder für ein tkinter GUI „assets \ images.png“ . Etwas ID möchte in der ausführbaren Datei enthalten sein.

Also habe ich diese Zeile unter "a.datas" in meiner .spec-Datei eingefügt.

Baum ('Assets', prefix = 'Vermögen \'),

Dann mit PyInstaller umgepackt "pyinstaller.py MipMapper-V1.2 \ MipMapper-V1.2.spec". Dies erzeugt eine exe, in der die Assets nicht enthalten sind. Ich kann den Assets-Ordner in das Exe-Verzeichnis kopieren und es funktioniert. Ist es mein Code? es bezieht sich auf "Vermögenswerte" einen relativen Pfad für Dinge. Also bekomme ich einen -1 Fehler zurück. Es kann die Assets nicht finden. Danke für jede Hilfe im Voraus.

Antwort

1

Adding data files und der nächste Abschnitt using data files from module in pyinstaller docs.

Ja, Sie sollten den relativen Pfad des Pakets anstelle des einfachen relativen Codes in Ihrem Code verwenden. Weil das Paket nicht relativ zur Ausführungsbinärdatei extrahiert wird, sondern irgendwo im Temp-Verzeichnis. Suchen Sie nach pkg_resources Paket. Zum Beispiel dieser Funktion:

dir = resource_filename('your_package', 'app/samples') 

Um zu klären, wie Daten zum Beispiel in spec Look definieren:

a = Analysis(['../trunk/__main__.py'] 
     ... 
     datas=[('../src/trunk/your_package/app/samples/data.bin', 'your_package/app/samples')], 
     ...