Печать не отображается в ноутбуке ipython - python

Я использую ipython notebook (http://ipython.org/notebook.html), чтобы сделать демонстрацию, и кажется, что функция печати не работает:

enter image description here

Извините, экран печати может быть не таким ясным, а вкратце:

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

In [2]: print 'hello world'

И нет вывода на печать из [2]

Кто-нибудь знает, это известная ошибка? И кто-нибудь знает, как это исправить?

Ответ 1

У меня была аналогичная проблема с печатью, когда моя первая ячейка кода:

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

Затем я прокомментировал вторую и третью строки следующим образом:

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

Reset ядро ​​и перезапустил программу, и теперь мои операторы печати работают правильно.

[edit] Позже я обнаружил, что когда у меня была проблема с печатью, все выходы на печать фактически отправлялись на терминал консоли ipython (в моем ящике Linux) вместо того, чтобы вставлять его в ноутбук.

Ответ 2

Я столкнулся с аналогичной проблемой (reload(sys) был в пакете, который я импортировал).

Моим обходным решением было то, что в верхней части script я импортировал sys и сохранил sys.stdout в отдельной переменной, например. stdout.

Затем я импортирую все остальные вещи, включая тот, который вызывает reload(sys).

Затем, в конце, я установил sys.stdout = stdout, который перенаправляет вывод обратно в ноутбук IPython

Ответ 3

Принимая то, что @JoostJM сказал, которое работает, и помещаю его в код:

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

Изменение кодировки по умолчанию направляет вывод на консоль, это возвращает его к ноутбуку jupyter.