Python Click:如何实现类似于--help的help命令?

Python Click:如何实现类似于--help的help命令?,python,python-click,Python,Python Click,我有一个python click CLI。当我将--help传递给任何命令时,它都会打印一条我喜欢的帮助消息。我发现现在很多用户都在打字 mycli help foo 而不是 mycli foo --help 是否有一种方法可以使前一种方法与后一种方法一样,以通用的方式用于所有命令 该命令的实现大致如下 @click.group() @click.pass_context def cli(ctx): ctx.obj = {} @cli.command() @click.argume

我有一个python click CLI。当我将
--help
传递给任何命令时,它都会打印一条我喜欢的帮助消息。我发现现在很多用户都在打字

mycli help foo
而不是

mycli foo --help
是否有一种方法可以使前一种方法与后一种方法一样,以通用的方式用于所有命令

该命令的实现大致如下

@click.group()
@click.pass_context
def cli(ctx):
    ctx.obj = {}

@cli.command()
@click.argument('my_arg')
@click.pass_context
@report_errors
def foo(ctx, my_arg):
    # some stuff here

click.Command
对象有一个返回其
--help
字符串的方法。将其与组查找子命令的方法相结合,类似的方法应该可以工作(未经测试):


click.Command
对象有一个返回其
--help
字符串的方法。将其与组查找子命令的方法相结合,类似的方法应该可以工作(未经测试):


如果您给出一个示例来说明如何构建命令,那么这将更容易回答。构建上述内容有多种方法,它们的解决方案略有不同。谢谢@stephernauch!我更新了问题。我应该补充一点,我正在寻找一种通用的解决方案。我的实际CLI有很多命令,我希望
help
命令能适用于所有这些命令。如果您能给出一个示例,说明如何构建命令,这将更容易回答。构建上述内容有多种方法,它们的解决方案略有不同。谢谢@stephernauch!我更新了问题。我应该补充一点,我正在寻找一种通用的解决方案。我的实际CLI有很多命令,我希望
help
命令能适用于所有命令。谢谢!这在99%的情况下有效,但是用法字符串将
help
作为子命令,而不是
子命令。你知道有什么解决办法吗?@JesseShieh:不知道。我在上面加了一行,上面写着
ctx.info\u name=subcommand
,看起来很有效。谢谢!这在99%的情况下有效,但是用法字符串将
help
作为子命令,而不是
子命令。你知道这个问题的解决方法吗?@JesseShieh:不知道。我在上面加了一行,上面写着
ctx.info\u name=subcommand
,看起来很有效。
@cli.command()
@click.argument('subcommand')
@click.pass_context
def help(ctx, subcommand):
    subcommand_obj = cli.get_command(ctx, subcommand)
    if subcommand_obj is None:
        click.echo("I don't know that command.")
    else:
        click.echo(subcommand_obj.get_help(ctx))