PyInstaller 2.0 fichier de regroupement en tant que --onefile

Je vais essayer de regrouper mes py script comme un .exe à l'aide de PyInstaller 2.0. Je suis en mesure d'intégrer le script, mais dans mon script, je besoin pour ouvrir un fichier qui devrait être fourni dans le fichier exe (si c'est portable). Je vais avoir du mal à faire cela..

Dans mon .py, j'ai

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

- Je utiliser PyInstaller 2.0 et cela fonctionne très bien sur mon ordinateur, mais si je transfert le fichier exe d'un autre ordinateur, il n'est pas d'aller travailler.. PyInstaller 2.0 est assez nouveau, donc il y a très peu de documents sur elle, et l'éditeur de la documentation est assez "manquant."

Ici est l'éditeur d'info sur le sujet: (je ne pense pas que leur documentation est à jour, parce que dans le début, il dit d'utiliser les Configure.py, puis dans d'autres docs il est dit Configure.py n'est plus nécessaire dans la version 2.0)

Dans un --onfichier de distribution, les fichiers de données sont regroupés au sein de l'exécutable, puis extraite au moment de l'exécution dans le répertoire de travail par le code C (qui est également capable de reconstruire des arborescences de répertoires). Le répertoire de travail est le meilleur trouvé en os.environ['_MEIPASS2']. Ainsi, vous pouvez accéder à ces fichiers par le biais de:

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

Qui n'a pas vraiment de sens pour moi, un programmeur débutant..

Un autre document à partir de l'éditeur dit..

Dans un --onfichier de distribution, les fichiers de données sont regroupés au sein de l'exécutable, puis extraite au moment de l'exécution
dans le répertoire de travail par le code C (qui est également capable de reconstruire des arborescences de répertoires). Le répertoire de travail
est meilleur par sys._MEIPASS. Ainsi, vous pouvez accéder à ces fichiers par le biais de:

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

J'ai expérimenté autour un peu avec os.environ["_MEIPASS2"] et python ne semble pas comprendre l'os.de l'environnement["_MEIPASS2"]. Je reçois ce retour:

>>> 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'

J'ai également expérimenté avec sys._MEIPASS.. Ouais, python répond 'module' a pas d'attribut "_MEIPASS'.

À ce point, j'ai l'impression que ma tête est sur le point d'exploser.. j'apprécie PyInstaller auteurs pour leur travail, mais leur documentation est le pire que j'ai jamais vu! J'ai juste besoin de quelqu'un pour m'aider bundle mon fichier dans le fichier exe. Je tiens vraiment à utiliser PyInstaller 2.0+ depuis tous les .spec trucs me confond avec les versions précédentes de PyInstaller.

BTW, je suis sous Win8 64 bits avec python 2.7.3

S'IL VOUS PLAÎT AIDER!

source d'informationauteur user1914730