web-dev-qa-db-ja.com

ipythonノートブックに印刷が表示されない

ipythonノートブック( http://ipython.org/notebook.html )を使用してデモを実行していますが、印刷機能が機能していないようです:

enter image description here

明確にするために、上の図のコマンドはここで書き直されます。

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

In [2]: print 'hello world'

つまり、[2]からの印刷出力はありません。

既知のバグかどうかは誰にもわかりますか?そして、誰もそれを修正する方法を知っていますか?

45
alvas

最初のコードセルが次のような場合、同様の印刷の問題が発生しました。

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

次に、次のように2行目と3行目をコメントしました。

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

カーネルをリセットしてプログラムを再実行すると、印刷ステートメントが正常に機能するようになりました。

後で、最初に印刷の問題が発生したときに、ノートブックに埋め込むのではなく、すべての印刷出力が実際に(Linuxボックス上の)ipythonコンソール端末に送信されていることがわかりました。

50
cnaak

同様の問題が発生しました(reload(sys)はインポートしたパッケージにありました)。

私の回避策は、スクリプトの上部で、sysをインポートし、_sys.stdout_を別の変数に格納することでした。 stdout

次に、reload(sys)を呼び出すものを含む、他のすべてのものをインポートします。

次に、最後に_sys.stdout = stdout_を設定します。これにより、出力がIPythonノートブックにリダイレクトされます

23
JoostJM

@JoostJMの言ったことを理解し、それが機能するようにし、それをコードとして配置します。

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

デフォルトのエンコーディングを変更すると、出力がコンソールに送られ、これによりjupyterノートブックに戻ります。

22
princelySid