在py2exe可执行文件中导入rich_ipython_小部件
我正在为我的python软件构建一个可执行文件,其中有一个交互式python终端小部件。如果我在python中运行它,它工作得很好,但是如果我双击用py2exe构建的.exe,它就无法运行。我隔离了问题,并将其归结为一行简单的代码:在py2exe可执行文件中导入rich_ipython_小部件,python,pyqt,ipython,py2exe,Python,Pyqt,Ipython,Py2exe,我正在为我的python软件构建一个可执行文件,其中有一个交互式python终端小部件。如果我在python中运行它,它工作得很好,但是如果我双击用py2exe构建的.exe,它就无法运行。我隔离了问题,并将其归结为一行简单的代码: from IPython.qt.console.rich_ipython_widget import RichIPythonWidget 如果我将此唯一行放在test.py文件中并运行它,则不会出现错误。现在,我使用以下setup.py文件使用py2exe构建.e
from IPython.qt.console.rich_ipython_widget import RichIPythonWidget
如果我将此唯一行放在test.py文件中并运行它,则不会出现错误。现在,我使用以下setup.py文件使用py2exe构建.exe:
from distutils.core import setup
from py2exe.build_exe import py2exe
setup(name = "Test",
console=[{"script":"testShell.py"}], options={})
然后,运行可执行文件时产生的错误消息为:
ImportError:
Could not load requested Qt binding. Please ensure that
PyQt4 >= 4.7 or PySide >= 1.0.3 is available,
and only one is imported per session.
Currently-imported Qt library: 'pyqt'
PyQt4 installed: False
PySide >= 1.0.3 installed: False
Tried to load: ['pyqt']
由于应用程序是在python中工作的,这意味着问题不是pyqt没有安装,而是没有找到
我在这里面对一堵墙,请告诉我您是否有线索?我已通过修改文件
“qt\u loader.py”
(在C:\Python27\Lib\site packages\IPython\external
中)修复了完全相同的问题
您需要做的只是强制“has\u binding”
函数返回“True”
。
问题在于“imp.find_模块”
,该模块不适用于py2exe
在这里,这实际上是一个“假阳性”(即在没有实际问题的情况下测试失败)。跳过测试解决了这个问题。看起来py2exe无法确定需要PyQt4还是PySide。大多数情况下,通过使用packages选项来帮助py2exe无法纠正此类错误,例如optins={“packages:'PyQt4}谢谢您的评论。我确实尝试按照您的建议添加此包。但这没有帮助:packages=['matplotlib','pylab','pytz','tables','numexpr','PyQt4']运行可执行文件时出现了什么错误?还是相同,还是不同?