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.
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é.
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