在 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",(即没有实际问题但失败的测试)。跳过测试解决问题。
我正在为我的 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",(即没有实际问题但失败的测试)。跳过测试解决问题。