Python3 + ipython + pylab no Ubuntu 14.04

0

Eu realmente quero mudar para o Python 3, mas o Ubuntu 14.04 dificulta isso ao usar o framework IPython + pylab.

Minhas configurações: Eu instalei a maioria dos pacotes importantes usando pip em vez de aptitude . Esses pacotes incluem numpy 1.10.1 , scipy 0.16.1 , matplotlib 1.5.0 , pylab 0.1.0 e IPython 4.0.1 .

Eu também instalei python3-pyqt5 5.2.1 e python3-pyside 1.2.1 usando aptitude .

Usar matplotlib de dentro de IPython funciona bem:

import matplotlib.pyplot as plt
plt.plot([0, 1], [1, 2])
plt.show()

Mas o problema começa quando tento usar pylab , chamando ipython --pylab ou chamando pylab de dentro do IPython. Isso é o que eu recebo em ambos os casos:

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']

Então, se eu entendi corretamente, ele não reconhece que PyQt5 está instalado. Isso é estranho por dois motivos; primeiro, import PyQt5 e import PyQt5.QtCore não reclamam. A segunda razão é que uma segunda chamada para o pylab funciona perfeitamente e com o Qt5!

Using matplotlib backend: Qt5Agg
Populating the interactive namespace from numpy and matplotlib

No entanto, há outra consequência para isso. Após a plotagem, com sucesso (digamos, com plot([0, 1], [1, 2]) ), quando eu sair do IPython usando Ctrl - D , recebo um Segmentation fault (core dumped) .

Este é um problema que tenho há cerca de 3 meses. Eu já postei algumas perguntas aqui: Really installing PyQt4 / 5 para python 3.4 no confiável e link . Eu tentei provavelmente quase todas as combinações de instalação pyside / pyqt5 / numpy / scipy / matplotlib / ipython / pylab via pip / aptitude. Nada parece funcionar corretamente.

    
por Bach 01.12.2015 / 10:15

1 resposta

2

No Ubuntu 14.04, eu poderia iniciar ipython e depois importar o PyQt5, mas se eu executar ipython --matplotlib qt5 , ele indicará que pyqt5 não está instalado.

Analisei o código e vi no arquivo /usr/local/lib/python3.4/dist-packages/IPython/external/qt_loaders.py , que ipython verifica QtCore , QtGui , Qtsvg e, no caso de pyqt5 , também qtwidgets . Naturalmente, eu tenho QtCore , QtGui e QtWidgets instalado, mas não Qtsvg . Eu executei synaptic e instalei Qtsvg para pyqt5 (que é python3-pyqt5.qtsvg ). Agora funciona.

TL; DR: Instale o pacote python3-pyqt5.qtsvg :

sudo apt-get install python3-pyqt5.qtsvg
    
por pizzaslice 02.12.2015 / 01:25