我正在使用ipython
笔记本(http://ipython.org/notebook.html)进行演示,打印功能似乎不起作用:
为清楚起见,这里重写了上图中的命令。
In [1]: 'hello world'
Out [1]: 'hello world'
In [2]: print 'hello world'
简而言之,没有来自[2]
.
有谁知道这是否是一个已知的错误?有谁知道如何解决它?
我正在使用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")
然后我像这样评论了第二行和第三行:
import sys
#reload(sys)
#sys.setdefaultencoding("utf-8")
重置内核并重新运行程序,现在我的打印语句工作正常。
后来,我发现当我第一次遇到打印问题时,所有打印输出实际上都被发送到 ipython 控制台终端(在我的 Linux 机器上),而不是嵌入到笔记本上。
我遇到了类似的问题(在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 笔记本。
我使用的是 Python 3,所以解决方案对我来说有点不同。
import sys
stdout = sys.stdout
# some functions that mess up sys.stdout
sys.stdout = stdout