PyInstaller 2.0 bundle-Datei als --onefile

Ich versuche zu bündeln, mein py-script als .exe-Datei mit PyInstaller 2.0. Ich bin in der Lage zu bündeln, das Skript, aber in meinem Skript, ich muss eine Datei öffnen, sollten gebündelt werden, die in der exe-Datei (also es ist tragbar). Ich habe Probleme dabei..

In meine .py, ich habe

filename = 'C:\path\to\my\file\doc.docx'
data = open(filename,'rb')

Benutze ich PyInstaller 2.0 und das funktioniert gut auf meinem computer, aber wenn ich die exe auf einen anderen computer es ist nicht zur Arbeit zu gehen.. PyInstaller 2.0 ist ziemlich neu, deshalb gibt es sehr wenige Dokumente auf, und der Herausgeber der Dokumentation ist ziemlich "fehlt."

Hier ist der publisher-info in der Sache: (ich glaube nicht, dass die Dokumentation aktuell ist, weil am Anfang heißt es verwenden Configure.py dann in anderen docs es sagt Configure.py wird nicht mehr benötigt 2.0)

In einem --onefile Verteilung, die Daten werden gebündelt in die ausführbare Datei und dann extrahiert, die zur Laufzeit in das work-Verzeichnis von der C-code (das ist auch in der Lage zu rekonstruieren directory-Bäume). Das work-Verzeichnis ist am besten in os.environ['_MEIPASS2']. So können Sie den Zugriff auf diese Dateien durch:

os.path.join(os.environ["_MEIPASS2"], relativename))

Nicht wirklich für mich Sinn machen, einen Anfang Programmierer..

Einem anderen Dokument aus dem Verlag sagt..

In einem --onefile Verteilung, die Daten werden gebündelt in die ausführbare Datei und dann zur Laufzeit extrahiert
in das work-Verzeichnis von der C-code (das ist auch in der Lage zu rekonstruieren directory-Bäume). Das work-Verzeichnis
ist am besten, indem Sie sys._MEIPASS. So können Sie den Zugriff auf diese Dateien durch:

os.path.join(sys._MEIPASS, relativename))

Habe ich experimentierte herum, ganz ein bisschen mit dem os.environ["_MEIPASS2"] und python scheint nicht zu verstehen, os.Umwelt["_MEIPASS2"]. Ich bekomme das zurück:

>>> print os.environ["_MEIPASS2"]

Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    print os.environ["_MEIPASS2"]
  File "C:\Python27\lib\os.py", line 423, in __getitem__
    return self.data[key.upper()]
KeyError: '_MEIPASS2'

Ich experimentierte auch mit sys._MEIPASS.. Ja, python reagiert 'Modul' hat kein Attribut '_MEIPASS'.

Zu diesem Zeitpunkt habe ich das Gefühl, mein Kopf ist zu explodieren.. ich Schätze PyInstaller Autoren für Ihre Arbeit, aber Ihre Dokumentation ist das Schlimmste, das ich je gesehen habe! Ich brauche nur jemanden, der mir hilft mein bundle-Datei in der exe-Datei. Ich würde wirklich gerne verwenden PyInstaller 2.0+, da alle die .spec-Zeug verwirrt mich mit früheren Versionen von PyInstaller.

BTW, ich bin mit Win8 64bit mit python 2.7.3

BITTE UM HILFE!!

InformationsquelleAutor der Frage user1914730 | 2012-12-19

Schreibe einen Kommentar