我正在为我的 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”
函数返回“True”
。
问题出在“imp.find_module”
上,它不能与py2exe一起工作!
这里,这实际上是一个“误报”,(即测试失败但没有实际问题)。跳过测试可以解决问题。
关于python - 在 py2exe 可执行文件中导入 rich_ipython_widget,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29917087/