Py2exe lxml 问题
我有一个用wxpython写的应用程序,它依赖于lxml库,在通过python解释器运行时一切正常。不过,当我用py2exe创建exe文件时,出现了一个错误。
ImportError: No module named _elementpath
然后我用了 python setup.py py2exe -p lxml
命令,这次没有出现之前的错误,但又出现了另一个错误,内容是:
ImportError: No module named gzip
有人能告诉我问题出在哪里吗?我该怎么解决?另外,我需要把像libxml2、libxslt这样的dll文件放到我的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"}] )
编辑2:我尝试用cx_freeze作为替代方案,但得到了同样的错误。
ImportError: No module named _elementpath
之后我不知道该怎么继续了。
2 个回答
0
有时候,在修改完 setup.py
文件后,你还需要进行其他操作。
正如这里所描述的,如果你的包是以“eggs”格式安装的,那么你需要先卸载这个包。然后再通过强制 easy_install 解压这个包,使用 "-Z" 选项来重新安装,具体操作如下(我在处理 paramiko 包时遇到过这个问题):
pip uninstall paramiko
easy_install -Z paramiko
43
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,所以你也可以试试这个。