10
votes

Py2exe: incorporer des fichiers statiques dans le fichier EXE lui-même et leur accéder

J'ai trouvé une solution pour ajouter des fichiers dans bibliothèque.zip via: étendre py2exe à Copier des fichiers sur le zipfile où pkg_resources peut les charger .

Je peux accéder à mon fichier lorsque la bibliothèque.zip n'est pas incluse l'EXE.

i Ajouter un fichier: text.txt Annuaire: FOO / Media en bibliothèque.zip. Et j'utilise ce code: xxx

J'essaie d'utiliser pkg_resources mais je pense que je ne comprends pas quelque chose parce que je pouvais ouvrir directement "bibliothèque.zip".

Ma question est de savoir comment puis-je faire cela lorsque la bibliothèque.zip est intégrée dans EXE?

Cordialement

Jean-Michel


0 commentaires

3 Réponses :


0
votes

Vous ne devriez pas utiliser pkg_resources pour récupérer le fichier bibliothèque.zip. Vous devez l'utiliser pour récupérer la ressource ajoutée.

Supposons que vous ayez la structure de projet suivante: xxx

Vous utiliseriez ressources_string (ou, de préférence, ressources_stream) pour accéder à l'image. .jpg: xxx

qui devrait "travailler" ". Au moins, cela a fait quand j'ai regroupé mes fichiers multimédias dans l'EXE. (Désolé, j'ai depuis quitté la compagnie où j'utilisais Py2exe, donc ne pas avoir d'exemple de travail à dessiner.)

Vous pouvez également essayer d'utiliser pkg_resources.resource_filename (), mais je n'ai pas 't pense que ça marche sous py2exe.


0 commentaires

1
votes

Merci mais j'ai trouvé la solution xxx

meilleures salutations


0 commentaires

10
votes

J'ai pavé ensemble une solution raisonnablement soignée à cela, mais cela n'utilise pas pkg_resources.

J'ai besoin de distribuer des outils de productivité en tant qu'Ètateurs autonomes, c'est-à-dire que tous emballés dans le fichier One .exe. J'ai également besoin d'envoyer des notifications lorsque ces outils sont utilisés, que je fais via l'API de journalisation, à l'aide de la configuration basée sur des fichiers. J'aime le logging.cfg fileto permet de désactiver efficacement ces notifications, c'est-à-dire en supprimant le fichier lâche ... qui briserait probablement l'application. P>

Voici les bits intéressants de mon setup.py:

from win32api import LoadResource
from StringIO import StringIO
from logging.config import fileConfig
...

if __name__ == '__main__':
    if is_exe():
        logging_cfg = StringIO(LoadResource(0, u'LOGGINGCFG', 1))
    else:
        logging_cfg = 'main/resources/logging.cfg'
    fileConfig(logging_cfg)
    ...


3 commentaires

Cela fonctionnerait-il sur les fichiers PNG? Je suis sur le point de l'essayer, mais si vous savez que je serais reconnaissant d'entendre.


Ok, il y a des problèmes de formatage de fichiers car je pensais que je vais regarder dans ceux que cela devrait fonctionner, non?


Désolé, ça fait un moment. Je ne peux pas imaginer pourquoi l'intégration des images ne fonctionnerait pas; S'il vous plaît poster ce que vous trouvez.