单击:使用 CommandCollection() 后第一个命令的选项不可用

Click : options of first command not usable after using CommandCollection()

我想要两个单独的子命令,每个都有不同的选项。

例如-

command first --one --two
command second --three

选项 onetwo 仅用于子命令 firstthree 用于子命令 second.

我的代码格式如下:

@click.group()
@click.option('--one')
@click.option('--two') 
def cli1():
 print("clione")
@cli1.command()
def first():
   pass

@click.group()
@click.option('--three')
def cli2():
 print("clitwo")
@cli2.command()
def second():
   pass

cli = click.CommandCollection(sources=[cli1, cli2])

if __name__ == '__main__':
     cli()  

但是在 运行 之后,我无法 运行 每个子命令的任何选项。

我用过这个:Merging Multi Commands

我发现执行子命令最简单的方法是只使用一个组,我通常将该组命名为 cli,例如:

@click.group()
def cli():
    pass

使用组名声明如下命令:

@cli.command()
def name_of_command():
    ....

测试代码:

import click

@click.group()
def cli():
    pass

@cli.command()
@click.option('--one')
@click.option('--two')
def first(one, two):
    click.echo("clione %s %s" % (one, two))

@cli.command()
@click.option('--three')
def second(three):
    click.echo("clitwo %s" % three)

cli('first --one 4'.split())

结果

clione 4 None