在 py2exe 可执行文件中导入 rich_ipython_widget

import rich_ipython_widget in a py2exe excutable

我正在为我的 python 软件构建一个可执行文件,其中我有一个交互式 python 终端小部件。如果我在 python 中 运行 它工作得很好,但如果我双击我用 py2exe 构建的 .exe,它就无法 运行。我隔离了问题并将其归结为一行简单的代码:

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_loader.py"(在 C:\Python27\Lib\site-packages\IPython\external 中)解决了这个完全相同的问题。

您需要做的只是将 "has_binding" 函数强制为 return "True"。 问题在于 "imp.find_module" 不适用于 py2exe

在这里,这实际上是一个"false positive",(即没有实际问题但失败的测试)。跳过测试解决问题。