2014-05-08 3 views
5

Ich habe kürzlich ipython auf 2.0.0 aktualisiert und kann keine Inline-Plots zum Arbeiten bekommen. Wenn ichipython notebook inline matplotlib funktioniert nicht nach dem Upgrade auf 2.0

%pylab inline 
plot([1,2],[1,2]) 

versuchen erhalte ich folgende Ausgabe:

Populating the interactive namespace from numpy and matplotlib 
[<matplotlib.lines.Line2D at 0x10ffcf080>] 
/usr/local/lib/python3.4/site-packages/IPython/core/formatters.py:239: FormatterWarning: Exception in image/png formatter: _image_module::readpng: png_create_read_struct failed 
    FormatterWarning, 
<matplotlib.figure.Figure at 0x10e77ca58> 

Und in der Konsole habe ich die folgende Fehlermeldung:

ERROR:tornado.application:Uncaught exception in /api/kernels/0a214dee-3143-4d34-89cb-9d65ce154fe6/shell 
Traceback (most recent call last): 
    File "/usr/local/lib/python3.4/site-packages/tornado/websocket.py", line 322, in wrapper 
    return callback(*args, **kwargs) 
    File "/usr/local/lib/python3.4/site-packages/IPython/html/services/kernels/handlers.py", line 122, in on_message 
    self.session.send(self.zmq_stream, msg) 
    File "/usr/local/lib/python3.4/site-packages/IPython/kernel/zmq/session.py", line 646, in send 
    stream.send_multipart(to_send, copy=copy) 
AttributeError: 'NoneType' object has no attribute 'send_multipart' 

Jede Idee, was hier vor sich geht?

Edit: Ich bin auf Python 3.4.0, ipython 2.0.0 und 1.3.1 matplotlib

+1

Sieht aus wie Ihre Ipython-Installation ist geborken, ich vermute, da sind einige alte Dateien rumhängen. Ich würde vorschlagen, alles zu löschen und neu zu installieren. Ich würde auch vorschlagen, virtuelle Umgebungen zu verwenden, anstatt auf Systemebene zu installieren. – tacaswell

+0

Haben Sie jemals herausgefunden, was das verursacht hat? –

+0

Als erste Möglichkeit würde ich das ~/.ipython-Verzeichnis entfernen (oder zu einem anderen Namen verschieben, wenn Sie es speichern würden), falls es eines gibt. Vielleicht verursachen die Einstellungen der vorherigen Version das Problem. –

Antwort

0

Wie tcaswell erwähnte, ist der einfachste Weg, mit Problemen mit Abhängigkeiten von einzelnen Python-Modulen umzugehen, ist, sie zu testen in einer virtuellen Umgebung - was effektiv zu einer sauberen Installation führt. Nicht zuletzt hilft dies beim Debugging.

  • Machen Sie eine virtuelle Umgebung myenv, indem Sie diese in Ihrem Terminal genannt: $ virtualenv myenv

  • Aktivieren Sie die Umgebung durch vom Terminal ausgeführt wird: $ source myenv/bin/activate.

  • Installieren ipython (der Name Ihres virtualenvironment ist jetzt in Klammern an Ihre prompte: (myenv)$ pip install ipython notebook

  • Sobald Sie mit der virtuellen Umgebung fertig sind, laufen $ deactivate oder schließen Sie die Terminal-Sitzung

  • .

Es gibt eine Vielzahl guter Guides für virtuelle Umgebungen, ich würde empfehlen starting here. Wenn die Installation in einer virtuellen Umgebung die Dinge nicht repariert, könnte es ein größeres Problem geben Singen Sie die virtuelle Umgebung, können Sie einfach den Ordner löschen, der mit seinem Namen erstellt wurde (in diesem Fall myenv).

Und schließlich würde ich %matplotlib inline über %pylab inline als discussed in this question empfehlen.