我真的很想切换到 Python 3,但是 Ubuntu 14.04 在使用 IPython+pylab 框架时很难做到这一点。
pip
我的设置:我使用而不是安装了大多数重要的软件包aptitude
。这些软件包包括numpy 1.10.1,scipy 0.16.1,matplotlib 1.5.0,pylab 0.1.0和IPython 4.0.1。
我也安装了python3-pyqt5 5.2.1和python3-pyside 1.2.1使用aptitude
。
matplotlib
从内部使用IPython
效果很好:
import matplotlib.pyplot as plt
plt.plot([0, 1], [1, 2])
plt.show()
但是当我尝试使用时,问题就开始了pylab
,无论是通过调用ipython --pylab
还是从 IPython 内部调用pylab
。这是我在这两种情况下得到的结果:
ImportError:
Could not load requested Qt binding. Please ensure that
PyQt4 >= 4.7, PyQt5 or PySide >= 1.0.3 is available,
and only one is imported per session.
Currently-imported Qt library: 'pyqt5'
PyQt4 installed: False
PyQt5 installed: False
PySide >= 1.0.3 installed: True
Tried to load: ['pyqt5']
因此,如果我理解正确的话,它无法识别已PyQt5
安装的内容。这很奇怪,原因有两个:首先,import PyQt5
两者import PyQt5.QtCore
都没有抱怨。第二个原因是第二次调用 pylab 可以完美运行,并且适用于 Qt5!
Using matplotlib backend: Qt5Agg
Populating the interactive namespace from numpy and matplotlib
但是,这还有另一个后果。成功绘图后(例如,使用),当我使用-plot([0, 1], [1, 2])
退出 IPython 时,我得到了。CtrlDSegmentation fault (core dumped)
这个问题困扰了我大约 3 个月。我已经在这里发布了几个问题:真正在 Trusty 上为 Python 3.4 安装 PyQt4/5和https://stackoverflow.com/questions/32007733/pip-install-pyside-fails。我尝试了几乎所有通过 pip/aptitude 安装 pyside/pyqt5/numpy/scipy/matplotlib/ipython/pylab 的组合。似乎没有一个能正常工作。
答案1
在 Ubuntu 14.04 上,我可以启动ipython
然后导入 PyQt5,但如果我运行ipython --matplotlib qt5
,它会显示pyqt5
未安装。
然后我查看了代码,发现在文件中/usr/local/lib/python3.4/dist-packages/IPython/external/qt_loaders.py
,它ipython
检查QtCore
、QtGui
,Qtsvg
并且在 的情况下pyqt5
也检查qtwidgets
。当然,我确实安装了QtCore
、QtGui
和QtWidgets
,但没有Qtsvg
。我运行了 synaptic 并安装了Qtsvg
(pyqt5
即python3-pyqt5.qtsvg
)。现在它可以正常工作了。
总结:安装python3-pyqt5.qtsvg
软件包:
sudo apt-get install python3-pyqt5.qtsvg