Подтвердить что ты не робот

Проблемы с Py2exe lxml

У меня есть приложение 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 script Я использую

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

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



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

ImportError: No module named _elementpath

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

4b9b3361

Ответ 1

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, так что, возможно, стоит попробовать.

Ответ 2

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

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

pip uninstall paramiko
easy_install -Z paramiko