打印不显示在ipython笔记本中

alv*_*vas 45 python printing ipython jupyter-notebook

我正在使用ipython笔记本(http://ipython.org/notebook.html)进行演示,看起来打印功能似乎不起作用:

在此输入图像描述

为清楚起见,上面的图片中的命令被重写.

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

In [2]: print 'hello world'
Run Code Online (Sandbox Code Playgroud)

简而言之,没有打印输出[2].

有谁知道这是否是一个已知的错误?有谁知道如何解决它?

cna*_*aak 51

我的第一个代码单元格时出现了类似的打印问题:

import sys
reload(sys)
sys.setdefaultencoding("utf-8")
Run Code Online (Sandbox Code Playgroud)

然后我评论了第二行和第三行,如下所示:

import sys
#reload(sys)
#sys.setdefaultencoding("utf-8")
Run Code Online (Sandbox Code Playgroud)

重置内核并重新运行程序,现在我的print语句正常工作.

后来,我发现当我第一次遇到打印问题时,所有打印输出实际上都被发送到ipython控制台终端(在我的Linux机器上),而不是嵌入到笔记本电脑上.


小智 25

我遇到了类似的问题(在reload(sys)我导入的包中).

我的解决方法是在脚本的顶部,我导入sys并存储sys.stdout在一个单独的变量中,例如stdout.

然后我导入所有其他东西,包括调用的东西reload(sys).

然后,最后,我设置sys.stdout = stdout,将输出重定向回IPython笔记本

  • 这应该是正确答案。如果您需要默认编码为 utf8,上述答案并不能解决问题。真正的问题是,通过重新加载 sys,它会将 stdout 重置到控制台,因此您需要将其重置,如下所示。 (2认同)

小智 22

以@JoostJM所说的为准,并将其作为代码:

import sys
stdout = sys.stdout
reload(sys)
sys.setdefaultencoding('utf-8')
sys.stdout = stdout
Run Code Online (Sandbox Code Playgroud)

更改默认编码会将输出定向到控制台,这会将其设置回jupyter笔记本.