ipython
ノートブック( http://ipython.org/notebook.html )を使用してデモを実行していますが、印刷機能が機能していないようです:
明確にするために、上の図のコマンドはここで書き直されます。
In [1]: 'hello world'
Out [1]: 'hello world'
In [2]: print 'hello world'
つまり、[2]
からの印刷出力はありません。
既知のバグかどうかは誰にもわかりますか?そして、誰もそれを修正する方法を知っていますか?
最初のコードセルが次のような場合、同様の印刷の問題が発生しました。
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
次に、次のように2行目と3行目をコメントしました。
import sys
#reload(sys)
#sys.setdefaultencoding("utf-8")
カーネルをリセットしてプログラムを再実行すると、印刷ステートメントが正常に機能するようになりました。
後で、最初に印刷の問題が発生したときに、ノートブックに埋め込むのではなく、すべての印刷出力が実際に(Linuxボックス上の)ipythonコンソール端末に送信されていることがわかりました。
同様の問題が発生しました(reload(sys)
はインポートしたパッケージにありました)。
私の回避策は、スクリプトの上部で、sys
をインポートし、_sys.stdout
_を別の変数に格納することでした。 stdout
。
次に、reload(sys)
を呼び出すものを含む、他のすべてのものをインポートします。
次に、最後に_sys.stdout = stdout
_を設定します。これにより、出力がIPythonノートブックにリダイレクトされます
@JoostJMの言ったことを理解し、それが機能するようにし、それをコードとして配置します。
import sys
stdout = sys.stdout
reload(sys)
sys.setdefaultencoding('utf-8')
sys.stdout = stdout
デフォルトのエンコーディングを変更すると、出力がコンソールに送られ、これによりjupyterノートブックに戻ります。