使用PyQt5设置IPython Qtconsole

10
在OSX 10.9系统上,我安装了Qt5。后来我从源代码编译安装了Ipython、sip和PyQt5。现在出现的问题是:当我尝试运行ipython qtconsole时,出现了一堆与该目录(及其子文件夹)中的文件有关的错误。
/Library/Python/2.7/site-packages/IPython/

接着是

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:   None
   PyQt4 installed:                 False
   PySide >= 1.0.3 installed:       False
   Tried to load:                   ['pyside', 'pyqt']

我猜问题出在我安装了PyQt5,而不是PyQt4。这是问题所在吗?还是我漏掉了其他东西?

有没有办法让qtconsole和PyQt5一起工作?如果没有,最简单的方法是什么?(最好不要在一台机器上安装两个版本的Qt库)。


为了简洁起见,我跳过了完整的错误消息。如果需要更好地理解情况,请告诉我是否应该添加它们。

4个回答

4

问题可能与您的Python路径有关。

我曾经遇到过几乎完全相同的问题。我使用Homebrew安装了PyQt,但是我一直收到相同的错误消息。最终解决问题的方法是将以下行添加到我的.bash_profile文件中:

export PYTHONPATH=/usr/local/lib/python2.7/site-packages:$PYTHONPATH

由于我自己也是初学者,所以无法为您提供更进一步的帮助,但我希望这可以解决问题。


谢谢,但我担心路径不是我的问题。我的路径已经设置为PyQt源代码构建的位置。我认为问题只是PyQt4和5之间的兼容性。但无论如何还是谢谢 :) - Pouya
这是由于混淆了Python的不同路径所致。使用pip和brew安装的内容,除非正确设置了Python路径,否则彼此之间无法找到。请注意,这种方法非常脆弱,因为它明确指定了要查找包(如qt、matplotlib等)的位置。 - fricke
终于,耶稣上帝。这甚至可以在pyenv虚拟环境中工作。谢谢。 - C. Alan Zoppa

3

我知道这已经很老了,但是最近我在安装PyQt5时遇到了一些麻烦。

问题在于PyQt5会安装,但有些子模块不会。例如,请尝试

import PyQt5 #works
from PyQt5 import * # might fail

如果第二个命令失败,那么你在PyQt5设置方面存在问题,需要专注于这个问题。具体来说,ipython+qt将尝试导入以下内容:
from PyQt5 import QtCore, QtSvg, QtWidgets, QtGui

如果这些子模块中有任何一个被损坏/丢失,qt控制台启动将静默失败。
对我而言,事实证明PyQt5安装程序未能制作QtSvg绑定,而ipython尝试从PyQt5中加载它们。当您运行configure.py时,请使用-w选项,您将看到构建的所有细节,从而可以确定安装失败的位置。
在我的情况下,通过一些谷歌搜索,我发现我缺少QtSvg lib,可以轻松地从存储库中获取。

1
我遇到了同样的问题,尽管最近的brew中包含了ipython,但ImportError中也包括了PyQt5(以及PyQt4PySide)。所以,如果之前使用PyQt5无法工作,现在可以了。
将正确的PYTHONPATH添加到.bash_profile中,即可解决该问题,甚至在我的virtualenv中也可以。(我没有足够的声望来赞成或评论oxtay的答案,在那里更合适...)

1

将环境变量QT_API设置为pyqt5,可以解决同样的问题。


接下来,我定义了一个bash别名alias ipy='export QT_API=pyqt && ipython qtconsole --profile knb --pylab=inline',使用了我的个人配置文件。 - knb
1
vvch,你添加了哪一行代码(在哪个文件中)来实现设置环境变量QT_API=pyqt5 - Jacob Irwin
1
@JacobIrwin 在你的.profile文件或.bash_profile文件中,或者在任何初始化环境变量的文件中。或者你可以像上面建议的那样创建一个bash别名。 - vvch
但是据我所知,最近版本的IPython没有这个问题,所以您可以直接更新它。 - vvch

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接