Py2exe lxml горе - PullRequest
       32

Py2exe lxml горе

25 голосов
/ 15 марта 2011

У меня есть приложение wxpython, которое зависит от lxml и хорошо работает при запуске через интерпретатор python. Однако при создании exe с py2exe я получил эту ошибку

ImportError: No module named _elementpath

Затем я использовал python setup.py py2exe -p lxml, и я не получил вышеуказанную ошибку, но еще один говорит

ImportError: No module named gzip

Может кто-нибудь сообщить мне, в чем проблема и как я могу ее исправить. Также я должен поставить любой DLL-файлы, такие как libxml2, libxslt и т.д. в моей папке dist? Я искал компьютер и не нашел эти файлы, так может они не нужны?

Спасибо.

Редактировать: я только что попробовал с python setup.py py2exe -p -i gzip, и был создан exe. Но сгенерированный exe не запускается. Я дважды щелкаю по нему, и он ничего не делает.

Вот скрипт setup.py, который я использую

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

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



Edit2: я пытался использовать cx_freeze в качестве альтернативы, но получил тот же

ImportError: No module named _elementpath

ошибка. Не знал, как действовать после этого.

Ответы [ 2 ]

41 голосов
/ 15 марта 2011

Py2exe позволяет вам указать дополнительные пакеты / модули для включения с аргументом options в setup(), если они не обнаруживаются автоматически.Следующее должно работать:

from distutils.core import setup
import py2exe

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

Я также недавно обнаружил PyInstaller , который имеет встроенную поддержку для ряда известных пакетов, включая lxml, так что это может бытьстоит попробовать.

0 голосов
/ 26 августа 2015

Иногда вам нужно будет выполнить еще одно действие после изменения файла setup.py.

Как описано здесь , необходимо удалить пакет, если он установлен "яйца "архив.Затем установите его снова, заставив easy_install разархивировать архив с параметром «-Z», как показано ниже (у меня возникла проблема с пакетом paramiko):

pip uninstall paramiko
easy_install -Z paramiko
...