当我们使用 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)