Ubuntu 14.04 上的 Python3 + ipython + pylab

Bac*_*ach 2 pyside python3 qt5 ipython pyqt5

我很想切换到Python 3,但是Ubuntu 14.04在使用IPython+pylab框架时很难做到这一点。

pip我的设置:我已经使用而不是安装了大多数重要的软件包aptitude。这些软件包包括numpy 1.10.1scipy 0.16.1matplotlib 1.5.0pylab 0.1.0IPython 4.0.1

我还使用安装了python3-pyqt5 5.2.1python3-pyside 1.2.1aptitude

matplotlib从内部使用IPython效果很好:

import matplotlib.pyplot as plt
plt.plot([0, 1], [1, 2])
plt.show()
Run Code Online (Sandbox Code Playgroud)

pylab但是当我尝试通过调用或从 IPython 内部ipython --pylab调用来使用 时,问题就开始了。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']
Run Code Online (Sandbox Code Playgroud)

所以,如果我理解正确的话,它不会识别已PyQt5安装的。这很奇怪,有两个原因:首先,import PyQt5双方import PyQt5.QtCore都没有抱怨。第二个原因是对 pylab 的第二次调用可以完美地工作,并且使用 Qt5!

Using matplotlib backend: Qt5Agg
Populating the interactive namespace from numpy and matplotlib
Run Code Online (Sandbox Code Playgroud)

然而,这还有另一个后果。成功绘制后(例如,使用),当我使用-plot([0, 1], [1, 2])退出 IPython 时,我得到一个.CtrlDSegmentation fault (core dumped)

这个问题我已经困扰了大约3个月了。我已经在这里发布了几个问题:ReallyInstalling PyQt4/5 for python 3.4 on trusty/sf/ask/2240541341/。我已经尝试了几乎所有通过 pip/aptitude 安装 pyside/pyqt5/numpy/scipy/matplotlib/ipython/pylab 的组合。似乎没有什么能正常工作。

小智 5

在 Ubuntu 14.04 上,我可以启动ipython然后导入 PyQt5,但是如果我运行ipython --matplotlib qt5,它会提示pyqt5未安装。

然后我查看了代码并在文件中看到/usr/local/lib/python3.4/dist-packages/IPython/external/qt_loaders.py,它ipython检查QtCore, QtGuiQtsvg并且在情况下pyqt5还检查qtwidgets。当然,我确实有QtCoreQtGui并且QtWidgets安装了,但没有Qtsvg。我运行了 synaptic 并安装了Qtsvgpyqt5python3-pyqt5.qtsvg)。现在可以了。

TL;DR:安装python3-pyqt5.qtsvg软件包:

sudo apt-get install python3-pyqt5.qtsvg
Run Code Online (Sandbox Code Playgroud)