刚刚发现以下内容。通过笔记本电脑运行
import
.echo("test")
输出:
/home/user/anaconda3/envs/p36/lib/python3.6/site-packages//utils.py in echo(message, file, nl, err, color)
257
258 if message:
--> 259 file.write(message)
260 file.flush()
261
UnsupportedOperation: not writable
之前有人见过这个并知道如何解决这个问题吗?我必须使用lib通过使用。所以不可能。
更新: 这个提交点击的jupyter分支解决了这个问题: https://github.com/elgalu/click/commit/1cb7aaba8c9dd6ec760d3e7e414d0b4e5f788543#diff-d17772ee4f65879b69a53dbc4b3d42bd
答案 0 :(得分:4)
我认为Jupyter劫持并锁定了STDOUT
/ STDERR
(至少是click
试图使用的那个),如果你没有提供一个流来{ {1}}它会尝试写入click.echo()
/ STDOUT
,因此会出错。
您可以通过自己传递STDERR
输出流来解决此问题:
STDOUT
答案 1 :(得分:1)
在我使用Python 3的情况下,我想在Jupyter笔记本中以及代码在终端中运行时保留我的消息上的点击样式。我这样处理:
from io import UnsupportedOperation
import click
item = 'Your Name'
message = click.style('"{}"'.format(item), fg='red', bold=True)
try:
click.echo(message)
except UnsupportedOperation as err:
print('Error: "{}"'.format(err))
print(message)
颜色保留在笔记本中: