【问题标题】:Py2exe lxml woesPy2exe lxml 问题
【发布时间】:2011-07-15 14:11:24
【问题描述】:

我有一个 wxpython 应用程序,它依赖于 lxml,并且在通过 python 解释器运行它时运行良好。但是,当使用 py2exe 创建一个 exe 时,我得到了这个错误

ImportError: No module named _elementpath

然后我使用python setup.py py2exe -p lxml 并没有收到上述错误,但是 另一种说法

ImportError: No module named gzip

谁能告诉我问题是什么以及如何解决它。我也应该放任何 我的 dist 文件夹中的 libxml2、libxslt 等 dll 文件?我搜了电脑 并没有找到这些文件,所以也许它们不需要?

谢谢。

编辑:我刚刚尝试使用 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

错误。之后就不知道怎么办了。

【问题讨论】:

    标签: python wxpython lxml py2exe


    【解决方案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 在内的许多知名包的支持,因此也值得一试。

    【讨论】:

    • 如果您想将其创建为单个可执行文件(无需额外的pyc、dll等),您可以如下:from distutils.core import setup; import py2exe, sys; sys.argv.append('py2exe'); setup( windows=[{'script': 'your_script.py'}], zipfile = None, options={ 'py2exe': { 'bundle_files': 1, 'compressed': True, 'includes': ['lxml.etree', 'lxml._elementpath', 'gzip'], } } );
    【解决方案2】:

    修改setup.py文件后,有时您需要执行更多操作。

    here 所述, 如果软件包安装在“eggs”存档中,则应该有必要卸载它。 然后通过强制easy_install使用“-Z”选项解压缩存档再次安装它(我遇到了paramiko包的问题):

    pip uninstall paramiko
    easy_install -Z paramiko
    

    【讨论】:

      猜你喜欢
      • 2013-02-07
      • 1970-01-01
      • 2011-03-23
      • 2010-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多