2009-10-02 15 views
0

Je travaille sur la création d'une version py2exe de mon application. Py2exe échoue à copier certains modules dans les fichiers Mes charges d'applications originales .png bien, mais la version exe ne possède pas:.La version py2exe de l'application GTK ne peut pas lire les fichiers png

Traceback (most recent call last): 
    File "app.py", line 1, in <module> 
    from gui.main import run 
    File "gui\main.pyc", line 14, in <module> 

    File "gui\controllers.pyc", line 10, in <module> 

    File "gui\utils\images.pyc", line 78, in <module> 
    ☺ 
    File "gui\utils\images.pyc", line 70, in GTK_get_pixbuf 
    ☺§☺▲☻ 
    File "gui\utils\images.pyc", line 38, in PIL_to_pixbuf 

gobject.GError: Image type 'png' is not supported 

Toute idée de ce que je forcer py2exe à inclure?

Répondre

2

De quelle plateforme s'agit-il? Dernièrement, je pense qu'ils ont amélioré le support png sur Windows, donc la version de pygtk que vous utilisez est également pertinente. http://aruiz.typepad.com/siliconisland/2008/02/goodbye-zlib-li.html

+0

C'est Python 2.5, et je pense que la dernière version de pygtk - 2.12.9. La chose est, cela fonctionne normalement; il échoue juste une fois que j'essaye de le transformer en exe – Claudiu

+0

ah je vois un problème avec lui ne trouvant pas le dossier de module de chargeur de pixbuf ... – Claudiu

+1

Je devinerais que vous avez l'ancienne version qui a besoin de zlib et libpng dlls. Avez-vous spécifié ceux pour l'inclusion? – pixelbeat

4

Ceci est un problème connu avec PIL et py2exe

PIL (bibliothèque d'images python) importe ses plugins dynamique qui py2exe ne capte pas, donc il ne comprend pas les plug-ins dans le .exe fichier.

La solution (je l'espère!) Est d'importer les pilotes explicitement comme celui-ci dans l'un de vos fichiers .py

import Image 
import PngImagePlugin 
Image._initialized=2 

Cela signifie que py2exe comprendra certainement le plug-in. Le bit Image._initialized arrête la numérisation PIL pour plus de plugins.

Here are the docs du wiki py2exe expliquant ce en pleine

+1

Je soupçonne que ce n'est pas du tout lié. –

2

Assurez-vous que vous regroupez les chargeurs lorsque vous installez votre application. Py2exe ne le saura pas, mais ils sont une partie nécessaire de GTK, et vivent où le reste des fichiers "données" de GTK vivent.

De http://unpythonic.blogspot.com/2007/07/pygtk-py2exe-and-inno-setup-for-single.html

Il ne suffit pas de simplement faire tirer py2exe dans les DLL GTK pour emballage (ce qu'il fait assez avec succès). GTK nécessite également un nombre de fichiers de données qui incluent thèmes, traductions, etc doivent être manuellement copiés dans le répertoire dist de sorte que l'application peut les trouver lors de l'exécution.

Si vous regardez dans votre répertoire d'exécution GTK (généralement quelque chose comme c: \ GTK), vous trouverez les répertoires : partage, etc, lib. Vous devrez copier tous ces éléments dans le répertoire dist après l'exécution de py2exe.

Droits d'auteur conservés.