2013-10-30 7 views
6

Ich beginne ein IPython Notebook und die matplotlib Ausgang keine Inline erscheinen, sondern wie folgt aus:Matplotlib Ausgang nicht inline in IPython Notebook trotz --pylab Inline-Option zeigt sich

<matplotlib.figure.Figure at 0x113035310> 

Hier ist der Code:

from pylab import * 
X = np.linspace(-np.pi, np.pi, 256,endpoint=True) 
C,S = np.cos(X), np.sin(X) 
plot(X,C) 
plot(X,S) 

show() 

Das Notebook wurde mit --pylab = inline gestartet, und wenn ich es scheint überprüfen, korrekt zu sein:

enter image description here

Dies ist mit IPython 1.1.0. Wenn ich es mit% pylab inline versuchen, erhalte ich ähnliche Ergebnisse:

enter image description here

Was könnte der Grund sein, dass die Handlung inline nicht angezeigt wird?

+0

Welche IPython-Version verwenden Sie? Kannst du es mit '% pylab inline' anstelle der' --pylab = inline' und 'from pylab import *' Aufrufe versuchen? – Jakob

+0

Ich habe die Frage bearbeitet, um Informationen zu diesen beiden Punkten hinzuzufügen. –

+0

Welchen Browser und welche Version dieses Browsers benutzen Sie? Nicht alle Browser werden unterstützt. Außerdem denke ich, dass '--pylab' und'% pylab' veraltet sind und durch '--matplotlib' bzw.'% matplotlib' ersetzt werden. – gotgenes

Antwort

7

Es stellt sich heraus, dass die Inline-Anzeige (und wahrscheinlich sogar das Erstellen des Bildes an erster Stelle) fehlgeschlagen ist, da Matplotlib die Schriftartdatei Vera.ttf nicht laden konnte. Es wurde versucht, diese Datei vom falschen Speicherort des Dateisystems zu laden, der für den Prozess nicht zugänglich war und in einer OS X-Sandbox ausgeführt wurde.

10/29/13 11:59:02.000 PM kernel[0]: Sandbox: python(24173) deny file-read-data $HOME/Library/Developer/Xcode/DerivedData/IPython_Notebook-adcshxaaibpeztbztvthgauvufsx/Build/Products/Debug/IPython Notebook.app/Contents/Resources/virtualenv/lib/python2.7/site-packages/matplotlib/mpl-data/fonts/ttf/Vera.ttf

Der Prozess von diesem Standort ausgeführt wurde:

$HOME/Library/Developer/Xcode/DerivedData/IPython_Notebook-adcshxaaibpeztbztvthgauvufsx/Build/Products/Release/IPython Notebook.app

("Debug" vs "Release")

Nachdem ich die Debug-Standort im Papierkorb und Relaunch der App, Die Sandbox-Nachricht wurde gelöscht und das Inline-Plotten wurde gestartet. Wenn ich das Anwendungspaket an einen anderen Speicherort kopiert und von dort gestartet habe, ist es erneut fehlgeschlagen. Der Stack-Trace in dem Bericht Sandbox-Verletzung zeigt an, dass es Freetype ist, der die Schriftart von der alten Position zu laden versucht:

0 libsystem_kernel.dylib   0x00007fff9054f5da __open + 10 
1 libfreetype.dylib    0x000000010b789214 FT_Stream_New + 260 
2 libfreetype.dylib    0x000000010b789e00 FT_Open_Face + 144 
3 libfreetype.dylib    0x000000010b789d5e FT_New_Face + 46 
4 ft2font.so      0x000000010b7259f0 FT2Font::FT2Font(Py::PythonClassInstance*, Py::Tuple&, Py::Dict&) + 698 
5 ft2font.so      0x000000010b735fa6 Py::PythonClass<FT2Font>::extension_object_init(_object*, _object*, _object*) + 116 

Einige Untersuchung ergab, dass matplotlib eine fontList.cache Datei verwaltet, die in der Sandbox Containerverzeichnis endet der App. Nachdem das Anwendungs-Bundle verschoben wurde, sind die Pfade in dieser Cachedatei ungültig/unzugänglich. I added code an meine App, um diese Cache-Datei beim Start zu entfernen.

Also nicht wirklich ein IPython-Problem, aber ich dachte, ich würde dies posten, falls es jemandem hilft, der das Notebook in Zukunft auch in eine Sandbox-OS X-App einbettet.

+0

nette eins, +1 von mir. – doug

-4

Versuchen Sie %matplotlib inline, ich denke, es ist nur ein Problem der Standardeinstellung.

+0

Nein, es war völlig unabhängig von IPython, es gab ein Problem mit einem von matplotlib verwendeten Font-Cache, der nicht OS X Sandboxing-freundlich ist. Siehe meine Antwort. Aber danke für die Drive-by-Antwort :) –

+0

Ich benutze auch Mac, es scheint mir hilft es, die Handlung zu generieren. Möglicherweise, weil ich eine Reihe von Vorlagen auf meinem Computer installiert habe. – jimmy

Verwandte Themen