ipython 笔记本中不显示打印

问题描述 投票:0回答:6

我正在使用

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

enter image description here

为了清晰起见,这里重写了上图中的命令。

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

In [2]: print 'hello world'

简而言之,

[2]
没有打印输出。

有人知道这是否是一个已知的错误吗?还有有人知道如何解决吗?

python printing ipython jupyter-notebook
6个回答
59
投票

当我的第一个代码单元是:

时,我遇到了类似的打印问题:
import sys
reload(sys)
sys.setdefaultencoding("utf-8")

然后我对第二行和第三行进行了这样的注释:

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

重置内核并重新运行程序,现在我的打印语句可以正常工作了。

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


33
投票

我遇到了类似的问题(

reload(sys)
在我导入的包中)。

我的解决方法是在脚本顶部导入

sys
,并将
sys.stdout
存储在单独的变量中,例如
stdout

然后我导入所有其他内容,包括调用

reload(sys)
的内容。

然后,最后,我设置了

sys.stdout = stdout
,它将输出重定向回 IPython 笔记本


27
投票

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

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

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


2
投票

此问题的另一个根源可能是“不受信任”的笔记本。就我而言,我从 GitHub 下载了源文件,当执行单元格时,没有显示任何输出。事实证明,该笔记本不受信任。所以,我点击了菜单

File
,然后点击了
Trust Notebook
。 Jupyter 进行的安全检查是为了避免执行隐藏在单元格中的恶意代码块。


1
投票

我使用的是Python 3,所以解决方案对我来说有点不同。

import sys
stdout = sys.stdout

# some functions that mess up sys.stdout

sys.stdout = stdout

0
投票

jupyter
Kernel > Restart kernel
帮助下, 参考https://github.com/ipython/ipython/issues/11027

© www.soinside.com 2019 - 2024. All rights reserved.