点击不在jupyter工作

时间:2017-12-12 12:45:20

标签: python python-click

刚刚发现以下内容。通过笔记本电脑运行

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

2 个答案:

答案 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)

颜色保留在笔记本中:

click styling is preserved