使用 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】:
我也遇到了同样的问题,尽管最近的brew
和ipython
中的ImportError
包括PyQt5
(以及PyQt4
和PySide
)。因此,如果它以前不能与 PyQt5 一起使用,那么现在可以。
将正确的PYTHONPATH
添加到.bash_profile
为我修复了它,即使在我的virtualenv
中也是如此。 (我没有对oxtay的答案进行投票或评论的声誉,这更合适......)
【讨论】:
以上是关于使用 PyQt5 设置 IPython Qtconsole的主要内容,如果未能解决你的问题,请参考以下文章
如何为 ipython 集群(ipcluster)设置 ssh 隧道