打印不显示在ipython笔记本中

时间:2014-08-25 20:51:52

标签: python printing ipython jupyter-notebook

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

enter image description here

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

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

In [2]: print 'hello world'

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

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

4 个答案:

答案 0 :(得分:49)

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

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

然后我评论了第二行和第三行:

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

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

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

答案 1 :(得分:23)

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

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

然后我导入所有其他内容,包括调用reload(sys)的内容。

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

答案 2 :(得分:22)

采取@JoostJM所说的,有效,并将其作为代码:

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

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

答案 3 :(得分:0)

我正在使用Python 3,因此解决方案对我来说有点不同。

Coroutine scope is over
Task from coroutine scope
Task from runBlocking
Task from nested launch