如何在 python 中创建点击子命令?
How to create click subcommands in python?
查看命令和组的 documentation 后,我没有发现任何有助于通过单击创建子命令的信息(版本 7.1.2)。要么我错过了,要么描述的很奇怪。
我想做的是有一个子命令,这样我就可以做,例如
python myscript.py sub1
python myscript.py sub2
执行两个不同的函数。这是我尝试过的:
import click
@click.group()
def sub1():
print("sub1")
@click.group()
def sub2():
print("sub2")
我也试过这个:
import click
@click.command()
def sub1():
print("sub1")
@click.command()
def sub2():
print("sub2")
这都行不通:
import click
@click.group()
def cli():
print("cli")
pass
@cli.command("sub1")
def sub1():
print("sub1")
@cli.command("sub2")
def sub2():
print("sub2")
但这似乎不起作用(即永远不会执行打印语句)。怎么做才对?这究竟在哪里记录?
在尝试文档中给出的确切示例时,我也得到了相同的行为:
import click
@click.group()
@click.option('--debug/--no-debug', default=False)
def cli(debug):
click.echo(f"Debug mode is {'on' if debug else 'off'}")
@cli.command() # @cli, not @click!
def sync():
click.echo('Syncing')
完全没有输出!
通过单击创建子命令,并在您调用您的代码时使其正常工作
python mycode.py
你需要定义 __main__
东西:
import click
@click.group()
def cli():
pass
@cli.command("sub1")
def sub1():
print("sub1")
@cli.command("sub2")
def sub2():
print("sub2")
if __name__ == "__main__":
cli()
他们似乎忘记了在他们的文档中提到它,或者它隐藏在某个地方。
查看命令和组的 documentation 后,我没有发现任何有助于通过单击创建子命令的信息(版本 7.1.2)。要么我错过了,要么描述的很奇怪。
我想做的是有一个子命令,这样我就可以做,例如
python myscript.py sub1
python myscript.py sub2
执行两个不同的函数。这是我尝试过的:
import click
@click.group()
def sub1():
print("sub1")
@click.group()
def sub2():
print("sub2")
我也试过这个:
import click
@click.command()
def sub1():
print("sub1")
@click.command()
def sub2():
print("sub2")
这都行不通:
import click
@click.group()
def cli():
print("cli")
pass
@cli.command("sub1")
def sub1():
print("sub1")
@cli.command("sub2")
def sub2():
print("sub2")
但这似乎不起作用(即永远不会执行打印语句)。怎么做才对?这究竟在哪里记录?
在尝试文档中给出的确切示例时,我也得到了相同的行为:
import click
@click.group()
@click.option('--debug/--no-debug', default=False)
def cli(debug):
click.echo(f"Debug mode is {'on' if debug else 'off'}")
@cli.command() # @cli, not @click!
def sync():
click.echo('Syncing')
完全没有输出!
通过单击创建子命令,并在您调用您的代码时使其正常工作
python mycode.py
你需要定义 __main__
东西:
import click
@click.group()
def cli():
pass
@cli.command("sub1")
def sub1():
print("sub1")
@cli.command("sub2")
def sub2():
print("sub2")
if __name__ == "__main__":
cli()
他们似乎忘记了在他们的文档中提到它,或者它隐藏在某个地方。