打印不显示在ipython notebook中

blmhpbnm  于 2023-05-27  发布在  Python
关注(0)|答案(5)|浏览(141)

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

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

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

In [2]: print 'hello world'

简而言之,[2]没有打印输出。
有人知道这是一个已知的bug吗?有人知道怎么修吗?

2j4z5cfb

2j4z5cfb1#

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

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

然后我这样注解第二行和第三行:

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

重置内核并重新运行程序,现在我的打印语句工作正常。
后来,我发现当我第一次遇到打印问题时,所有打印输出实际上都被发送到ipython控制台终端(在我的Linux机器上),而不是嵌入到notebook上。

dldeef67

dldeef672#

我遇到了类似的问题(reload(sys)在我导入的包中)。
我的解决方法是在脚本的顶部导入sys,并将sys.stdout存储在一个单独的变量中,例如。stdout
然后导入所有其他内容,包括调用reload(sys)的内容。
最后,我设置了sys.stdout = stdout,它将输出重定向回IPython notebook

ie3xauqp

ie3xauqp3#

把@JoostJM说的话,这是可行的,并把它作为代码:

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

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

xam8gpfp

xam8gpfp4#

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

import sys
stdout = sys.stdout

# some functions that mess up sys.stdout

sys.stdout = stdout
1l5u6lss

1l5u6lss5#

此问题的另一个来源可能是由于“不受信任”的笔记本。在我的例子中,我从GitHub下载了源文件,当执行单元格时,没有显示任何输出。事实证明,笔记本不受信任。所以,我点击菜单File,然后Trust Notebook。Jupyter的这种安全检查是为了避免执行隐藏在单元格中的恶意代码块。

相关问题