Py2exe lxml malheurs

j'ai une application wxpython qui dépend de lxml et qui fonctionne bien lorsque je l'exécute avec l'interpréteur python. Cependant, lors de la création d'un exe avec py2exe, j'ai eu cette erreur

ImportError: No module named _elementpath

j'ai ensuite utilisé python setup.py py2exe -p lxml et je n'ai pas eu d'erreur ci-dessus, mais un autre disant

ImportError: No module named gzip

quelqu'un Pourrait-il me faire savoir quel est le problème et comment je peux le résoudre. Aussi dois-je mettre n'importe quel les fichiers dll comme libxml2, libxslt etc dans mon dossier dist? J'ai cherché sur l'ordinateur et n'a pas trouver ces fichiers, donc peut-être qu'ils ne sont pas nécessaires?

Merci.

Edit: j'ai juste essayé avec python setup.py py2exe -p -i gzip et l'exe a été créé. Mais l'exe généré ne fonctionne pas. Je double-cliquez dessus et il ne faut pas faire n'importe quoi.

voici le setup.py script que j'utilise

from py2exe.build_exe import py2exe
from distutils.core import setup

setup( windows=[{"script": "gui.py"}] )





Edit2: j'ai essayé d'utiliser cx_freeze comme alternative, mais j'ai eu la même

ImportError: No module named _elementpath

erreur. Ne savais pas comment procéder, après que.

24
demandé sur jack the lesser 2011-03-15 10:38:50

2 réponses

Py2exe vous permet de spécifier des paquets/modules supplémentaires à inclure avec le options argument setup(), au cas où ils ne seraient pas détectés automatiquement. La suivante devrait fonctionner:

from distutils.core import setup
import py2exe

setup(
    windows=[{'script': 'gui.py'}],
    options={
        'py2exe': 
        {
            'includes': ['lxml.etree', 'lxml._elementpath', 'gzip'],
        }
    }
)

j'ai aussi récemment découvert PyInstaller, qui a intégré un support pour un certain nombre de paquets bien connus, y compris lxml, de sorte que cela pourrait aussi valoir la peine d'être essayé.

40
répondu Steven 2011-03-15 09:25:46

parfois vous aurez besoin de faire une autre action plus après modifier le setup.py fichier.

Comme décrit ici, il devrait être nécessaire de désinstaller le paquet s'il est installé sur l'archive "eggs". Puis installez-le à nouveau en forçant easy_install à décompresser l'archive avec l'option "- Z" comme suit (j'ai eu le problème avec le paquet paramiko):

pip uninstall paramiko
easy_install -Z paramiko
0
répondu Progsam 2015-08-26 15:17:11