单击在 jupyter 中不起作用

Click not working in jupyter

刚找到以下内容。 运行 通过笔记本

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

有人以前见过这个并且知道如何解决吗?我必须通过使用 .所以不可能。

更新: 对 click 的 jupyter 分支的提交解决了这个问题: https://github.com/elgalu/click/commit/1cb7aaba8c9dd6ec760d3e7e414d0b4e5f788543#diff-d17772ee4f65879b69a53dbc4b3d42bd

我认为 Jupyter 劫持并锁定了 STDOUT/STDERR(至少 click 正在尝试使用),如果您不向 click.echo() 它将尝试写入 STDOUT/STDERR,因此出现错误。

您可以通过自己传递 STDOUT 之类的输出流来解决此问题:

import click
import sys

click.echo("test", sys.stdout)
# test

在我使用 Python 3 的情况下,我想在 Jupyter notebook 中和终端中的代码为 运行 时保留消息的点击样式。我是这样处理的:

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)

笔记本中保留的颜色: