Python3 + ipython + pylab в Ubuntu 14.04
Я действительно хочу перейти на 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
или по телефону pylab
изнутри IPython. Вот что я получаю в обоих случаях:
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 с помощью Ctrl-D, я получаю Segmentation fault (core dumped)
,
Это проблема у меня уже около 3 месяцев. Я уже разместил здесь пару вопросов: действительно устанавливаю PyQt4/5 для python 3.4 на trusty и https://stackoverflow.com/questions/32007733/pip-install-pyside-fails. Я пробовал, вероятно, почти все комбинации установки pyside/pyqt5/numpy/scipy/matplotlib/ipython/pylab через pip / aptitude. Кажется, ничего не работает должным образом.
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
, Я запустил синаптический и установил Qtsvg
за pyqt5
(то есть python3-pyqt5.qtsvg
). Теперь это работает.
TL; DR: установить python3-pyqt5.qtsvg
пакет:
sudo apt-get install python3-pyqt5.qtsvg