在py2exe中删除rich_ipython_widget

时间:2015-04-28 10:37:48

标签: python pyqt ipython py2exe

我正在为我的python软件构建一个可执行文件,其中我有一个交互式python终端小部件。如果我在python中运行它,它的工作正常,但如果我双击我用py2exe构建的.exe,它就无法运行。我解决了这个问题,它下降到一行简单的代码:

from IPython.qt.console.rich_ipython_widget import RichIPythonWidget

如果我将这个唯一的行放在test.py文件中并运行它,则没有错误。现在我用py2exe使用以下setup.py文件构建.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,而是找不到。

我在这里面临一堵墙,如果你有线索,请告诉我?

1 个答案:

答案 0 :(得分:1)

我通过修改文件"qt_loader.py"(在C:\Python27\Lib\site-packages\IPython\external中)修复了同样的问题。

您需要做的只是强制"has_binding"函数返回"True"。 问题在于"imp.find_module",它不适用于 py2exe

在这里,这实际上是"误报",(即在没有实际问题时失败的测试)。跳过测试可以解决问题。