webentwicklung-frage-antwort-db.com.de

Druck wird in ipython notebook nicht angezeigt

Ich verwende ipython notebook ( http://ipython.org/notebook.html ), um eine Demo zu machen, und es scheint, dass die Druckfunktion nicht funktioniert:

enter image description here

Die Befehle im obigen Bild sind hier der Übersichtlichkeit halber umgeschrieben.

In [1]: 'hello world'
Out [1]: 'hello world'

In [2]: print 'hello world'

Kurz gesagt, es gibt keine Druckausgabe von der [2].

Weiß jemand, ob es sich um einen bekannten Fehler handelt? Und weiß jemand, wie man es repariert?

45
alvas

Ich hatte ein ähnliches Druckproblem, als meine erste Code-Zelle war:

import sys
reload(sys)
sys.setdefaultencoding("utf-8")

Dann habe ich die zweite und dritte Zeile folgendermaßen kommentiert:

import sys
#reload(sys)
#sys.setdefaultencoding("utf-8")

Setzen Sie den Kernel zurück und führen Sie das Programm erneut aus. Jetzt funktionieren meine print-Anweisungen ordnungsgemäß.

Später habe ich festgestellt, dass als ich das erste Mal ein Druckproblem hatte, alle Druckausgaben tatsächlich an das ipython-Konsolenterminal (auf meiner Linux-Box) gesendet wurden, anstatt auf dem Notebook eingebettet zu werden.

50
cnaak

Ich bin auf ein ähnliches Problem gestoßen (die reload(sys) befand sich in einem Paket, das ich importiert habe).

Mein Workaround war, dass ich oben im Skript sys importiere und sys.stdout In einer separaten Variablen speichere, z. stdout.

Dann importiere ich alle anderen Dinge, einschließlich desjenigen, der reload(sys) aufruft.

Am Ende setze ich sys.stdout = stdout, Wodurch die Ausgabe zurück zum IPython-Notizbuch geleitet wird

23
JoostJM

Nehmen Sie, was @JoostJM gesagt hat, was funktioniert, und geben Sie es als Code ein:

import sys
stdout = sys.stdout
reload(sys)
sys.setdefaultencoding('utf-8')
sys.stdout = stdout

Wenn Sie die Standardcodierung ändern, wird die Ausgabe an die Konsole weitergeleitet. Dadurch wird sie wieder auf das Jupyter-Notizbuch zurückgesetzt.

22
princelySid