我正在为我的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,而是找不到。
我在这里面临一堵墙,如果你有线索,请告诉我?
答案 0 :(得分:1)
我通过修改文件"qt_loader.py"
(在C:\Python27\Lib\site-packages\IPython\external
中)修复了同样的问题。
您需要做的只是强制"has_binding"
函数返回"True"
。
问题在于"imp.find_module"
,它不适用于 py2exe !
在这里,这实际上是"误报",(即在没有实际问题时失败的测试)。跳过测试可以解决问题。