单击:使用 CommandCollection() 后第一个命令的选项不可用
Click : options of first command not usable after using CommandCollection()
我想要两个单独的子命令,每个都有不同的选项。
例如-
command first --one --two
command second --three
选项 one
和 two
仅用于子命令 first
和 three
用于子命令 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
我想要两个单独的子命令,每个都有不同的选项。
例如-
command first --one --two
command second --three
选项 one
和 two
仅用于子命令 first
和 three
用于子命令 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