使用 PyQt5 设置 IPython Qtconsole

Posted

技术标签:

【中文标题】使用 PyQt5 设置 IPython Qtconsole【英文标题】:Setting up IPython Qtconsole with PyQt5 【发布时间】:2014-08-11 01:19:35 【问题描述】:

在 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。这是问题还是我错过了其他东西?

无论如何,我可以使用 PyQt5 使用 qtconsole 吗?如果没有,最简单的方法是什么? (最好是不涉及在一台机器上拥有两个版本的 Qt 库的方法)。


为简洁起见,我跳过发布完整的错误消息。请让我知道是否应该添加它们以更好地了解情况。

【问题讨论】:

【参考方案1】:

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

我遇到了几乎完全相同的问题。我已经使用Homebrew 安装了 PyQt,并且收到了相同的错误消息。最后解决问题的方法是将以下行添加到我的.bash_profile

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

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

【讨论】:

谢谢,但恐怕路径不是我的问题。我的路径已经设置为从源代码构建 PyQt 的位置。我认为问题只是 PyQt4 和 5th 之间的兼容性。但无论如何再次感谢:) 这是由于混合了 python 的不同路径造成的。除非 pythonpath 设置正确,否则使用 pip 和 brew 安装的东西不会相互找到。请注意,这是非常脆弱的,因为它明确说明了在哪里可以找到包(qt,matplotlib ...) 最后,耶稣上帝。这甚至可以在 pyenv virtualenvs 中使用。谢谢。【参考方案2】:

我知道这真的很老了,但我最近在设置 PyQt5 时遇到了麻烦。

问题是PyQt5 会安装,但某些子模块不会。比如试试

import PyQt5 #works
from PyQt5 import * # might fail

如果第二个命令失败,那么你的 PyQt5 设置有问题,你需要关注这个问题。

具体来说,ipython+qt会尝试导入以下内容

from PyQt5 import QtCore, QtSvg, QtWidgets, QtGui

如果这些子模块中的任何一个被损坏/丢失,qt 控制台启动将安静地失败。

对我来说,事实证明PyQt5 installer 未能进行QtSvg 绑定,ipython 试图从 PyQt5 加载。当您运行configure.py 时,使用-w 选项,您将看到构建的所有详细信息,从而可以确定安装失败的位置。

在我的例子中,我用谷歌搜索了一下,发现我错过了QtSvg lib,它可以很容易地从存储库中提取出来。

【讨论】:

【参考方案3】:

设置环境变量 QT_API=pyqt5 为我解决了同样的问题。

【讨论】:

在此之后,我使用我自己的配置文件定义了一个 bash 别名 alias ipy='export QT_API=pyqt && ipython qtconsole --profile knb --pylab=inline' vvch,你添加了哪一行(到哪个文件)来完成设置环境变量 QT_API=pyqt5 @JacobIrwin 在您的 .profile 文件或 .bash_profile 或初始化环境变量的任何文件中。或者您可以按照上面的建议创建一个 bash 别名 但是ipython的最新版本没有这个问题,所以你可以更新它【参考方案4】:

我也遇到了同样的问题,尽管最近的brewipython 中的ImportError 包括PyQt5(以及PyQt4PySide)。因此,如果它以前不能与 PyQt5 一起使用,那么现在可以。

将正确的PYTHONPATH 添加到.bash_profile 为我修复了它,即使在我的virtualenv 中也是如此。 (我没有对oxtay的答案进行投票或评论的声誉,这更合适......)

【讨论】:

以上是关于使用 PyQt5 设置 IPython Qtconsole的主要内容,如果未能解决你的问题,请参考以下文章

如何安装python3-pyqt5

导入 PyQt5 时出现 RuntimeError

ipython笔记本中的绘图宽度设置

如何为 ipython 集群(ipcluster)设置 ssh 隧道

如何使用 PyQt5 设置枚举 AllowTabbedDocks

如何使用 PyQt5 设置窗口图标?