当我们使用 click.group() 时如何只激活选项
How to activate only options when we use click.group()
我目前正在努力通过单击创建命令行参数。我几乎完成了研究,一切正常。问题是我想在使用 click.group()
而不是子命令时使用唯一选项。
让我们说 myCommand --version
这应该打印我的应用程序的版本,但它引发错误说 Error: Missing command.
我的代码是:
import sys
import os as _os
import click
import logging
from myApp import __version__
@click.group()
@click.option('--version', is_flag=True, help="Displays project version")
@click.pass_context
def cli(context, version: bool):
if version:
print(__version__)
@cli.command()
@click.pass_context
def init(context):
click.echo(message="Starting initilization for the project" + str(context.obj))
@cli.command()
@click.pass_context
def install(context):
click.echo(message="Starting installing from the saved data")
此处 --version 仅在我使用 cli --version init
等选项调用命令时有效,但我希望它是 cli --version
以打印版本。
谁能帮我解决这个问题?
有一个 click.version_option
可用作内置,它应该可以满足您的需求。
Documentation for version option
但是,如果您想推出自己的实现,我认为您可以尝试将 invoke_without_command=True
添加到您的组声明中:
@click.group(invoke_without_command=True)
我目前正在努力通过单击创建命令行参数。我几乎完成了研究,一切正常。问题是我想在使用 click.group()
而不是子命令时使用唯一选项。
让我们说 myCommand --version
这应该打印我的应用程序的版本,但它引发错误说 Error: Missing command.
我的代码是:
import sys
import os as _os
import click
import logging
from myApp import __version__
@click.group()
@click.option('--version', is_flag=True, help="Displays project version")
@click.pass_context
def cli(context, version: bool):
if version:
print(__version__)
@cli.command()
@click.pass_context
def init(context):
click.echo(message="Starting initilization for the project" + str(context.obj))
@cli.command()
@click.pass_context
def install(context):
click.echo(message="Starting installing from the saved data")
此处 --version 仅在我使用 cli --version init
等选项调用命令时有效,但我希望它是 cli --version
以打印版本。
谁能帮我解决这个问题?
有一个 click.version_option
可用作内置,它应该可以满足您的需求。
Documentation for version option
但是,如果您想推出自己的实现,我认为您可以尝试将 invoke_without_command=True
添加到您的组声明中:
@click.group(invoke_without_command=True)