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

Python 单击:使用CommandCollection()后第一个命令的选项不可用,python,python-click,Python,Python Click,我希望有两个单独的子命令,每个子命令具有不同的选项 例如- command first --one --two command second --three 选项one和two仅用于子命令first和twree用于子命令second 我的代码的格式如下: @click.group() @click.option('--one') @click.option('--two') def cli1(): print("clione") @cli1.command() def first():

我希望有两个单独的子命令,每个子命令具有不同的选项

例如-

command first --one --two
command second --three
选项
one
two
仅用于子命令
first
twree
用于子命令
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()  
但在运行它之后,我无法为每个子命令运行任何选项


我使用了这样的方法:

我发现执行子命令的最简单方法是只使用一个组,我通常将该组命名为
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