为什么会出现这个 ImportError 错误?

7
我有一个使用tkinter编写的应用程序,通过py2exe将其编译为.exe文件。

在设置文件中,我设置了要包含lxmlurlliblxml.htmlastmath

当我在CMD控制台中运行python setup.py py2exe时,编译成功。然后我进入它创建的dist文件夹,并运行.exe文件。

当我运行.exe文件时,会弹出此窗口。this
(来源:gyazo.com)

然后我打开Trader.exe.log文件,内容如下:

Traceback (most recent call last):
  File "Trader.py", line 1, in <module>
  File "lxml\html\__init__.pyc", line 42, in <module>
  File "lxml\etree.pyc", line 12, in <module>
  File "lxml\etree.pyc", line 10, in __load
  File "lxml.etree.pyx", line 84, in init lxml.etree (src\lxml\lxml.etree.c:190292)
ImportError: cannot import name _elementpath

在这里包含了我的setup.py文件的副本。请点此下载
请帮我找出问题所在,谢谢您的帮助。

2
这是一个重复的问题,我认为你可以在这里找到答案:https://dev59.com/fG435IYBdhLWcg3woRjG - PyNEwbie
可能是Py2exe lxml烦恼的重复问题。 - Daniel Haley
2个回答

7

看起来 py2exe 没有意识到它应该包含 lxml._elementpath 模块,该模块由 lxml.etree 有条件地导入。您可以在 setup.py 中使用 includes 关键字参数显式包含该模块。

setup(
    options={'py2exe': {"includes": ["lxml._elementpath"]}}
)

4
请将lxml._elementpath模块添加进去。你可以在这个帖子中找到更多信息:https://dev59.com/fG435IYBdhLWcg3woRjG 如果需要的话,请尝试使用类似于该问题答案中的setup.py - anon582847382

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接