Pyinstaller nicht Abholung Baum-oder Daten-Dateien
Ich versuche zu bauen, ein sehr basic python-Skript mit pyinstaller: print 'hello world!'
und ich bin versucht, eine Datei ODER ein Verzeichnis mit Dateien zur Verfügung die binären.
Ich habe die Dokumentation gelesen, über und über, ich habe versucht, Gebäude mit 1.5, 2.0, und die dev-build von 2,0, ich habe versucht, Gebäude mit --onefile --UND onedir, habe ich versucht, aufbauend auf OS X und Linux, aber aus irgendeinem Grund die Datei/Baum Aussagen in meine .spec-Datei zu sein scheinen ignoriert.
Hier sind einige .spec-Datei-Varianten, die ich ausprobiert habe:
coll = COLLECT(exe,
a.binaries
[('README','/Users/username/my_little_app/foo','DATA')],
Tree('/Users/username/my_little_app/foo','foo'),
Tree('/foo','foo'),
Tree('my_little_app/foo','foo'),
[('my_xml_file.xml','my_little_app/partner.xml','DATA')],
a.zipfiles,
a.datas,
strip=None,
upx=True,
name=os.path.join('dist', 'my_little_app'))
a.datas += [('my_xml_file.xml', '/Users/username/my_little_app/my_xml_file.xml', 'DATA')]
Gibt es etwas, was ich bin fehlt??
kein Glück? Ich bin hier hängengeblieben,
InformationsquelleAutor Joseph Ferraro | 2013-02-07
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dieser Antwort ziemlich spät, aber der Weg, um das hinzufügen beliebiger Dateien zu einer PyInstaller zu bauen, ist ziemlich klar dokumentiert:
https://pythonhosted.org/PyInstaller/#adding-files-to-the-bundle
Den ersten string im tuple ist der Pfad zu der Datei, die zweite Zeichenfolge ist der Weg, es wird unter dem integrierten Paket. In anderen Worten, Ihre Letzte Zeile wie diese:
Können Sie auch komplette Verzeichnisse wie diese:
Ich habe den relevanten Teil des docs unten.
Hinzufügen von Dateien zur Bundle
Hinzufügen von Dateien zur bundle, erstellen Sie eine Liste, die beschreibt die Dateien und stellen Sie es auf die
Analysis
nennen.Hinzufügen Von Daten-Dateien
Sie eine Liste, die beschreibt die Dateien, als der Wert der
datas=
argumentAnalysis
. Die Liste der Daten-Dateien ist eine Liste von Tupeln. Jedes Tupel hat zwei Werte, die beide müssen strings sein:Beispielsweise zum hinzufügen einer einzelnen README-Datei zu einem Ordner app, die Sie ändern könnte, die spec-Datei wie folgt:
Haben Sie die
datas=
argument ein-Element-Liste. Das Element ist ein Tupel, in dem der erste string sagt, wird die vorhandene Dateisrc/README.txt
. Diese Datei kopiert man in das bundle mit dem NamenREADME
.Die spec-Datei ist mehr lesbar, wenn Sie die Liste der hinzugefügten Dateien in einer separaten Anweisung:
Den Saiten kann entweder
/
oder\
als Pfad-Trennzeichen. Sie können festlegen, input-Dateien mit "glob" - Abkürzungen. Wenn die Eingabe aus mehreren Dateien, die Ausgabe-Zeichenkette kann der name eines Ordners. Zum Beispiel, um alle.mp3
Dateien aus einem bestimmten Ordner:Alle übereinstimmenden Dateien
/mygame/sfx/*.mp3
kopiert werden in dem Bündel und gespeichert in einem Ordner namenssfx
.Den Pfad zu der input-Datei oder Ordner kann absolut sein, wie in dem ersten Tupel, oder relativ, wie in der zweiten. Wenn er relativ ist, wird als relativ zum Speicherort der spec-Datei.
Können Sie auch den gesamten Inhalt eines Ordners:
Alle Dateien in
/mygame/data
kopiert rekursiv einen Ordner namensdata
im bundle.Tree
Klasse so fügen Sie einen ganzen Ordner rekursiv. Docs: pythonhosted.org/PyInstaller/#the-toc-and-tree-classesDas ist so seltsam, es funktioniert bei mir nicht, zumindest nicht mit der onefile option. Ich Lesen müssen, dass das temporäre Verzeichnis mit
base_dir = join(sys._MEIPASS)
. Und dann kann ich Datei die Dateien, z.B.os.path.join(base_dir, 'sfx', 'example.mp3')
, sonst die Dateien sind nicht im Lieferumfang enthalten.nevermind, dies ist die erwartet
InformationsquelleAutor Hubro