You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Click嵌套命令场景下如何在子命令帮助页展示父级命令选项

方案1:原生自定义Group类(无额外依赖)

通过继承click.Group重写帮助格式化方法,主动把父级命令的选项注入到子命令的帮助输出中,修改后的代码如下:

# foo.py
import click

# 自定义Group类,实现子命令帮助展示全局选项
class GroupWithGlobalOptions(click.Group):
    def format_help(self, ctx, formatter):
        # 优先输出父级的全局选项
        if ctx.parent:
            with formatter.section("全局选项"):
                ctx.parent.command.format_options(ctx.parent, formatter)
        # 输出子命令原本的帮助内容
        super().format_help(ctx, formatter)

# 声明group时指定使用自定义类
@click.group(cls=GroupWithGlobalOptions)
@click.option("--debug/--no-debug", default=False)
@click.pass_context
def cli(ctx, debug):
    ctx.ensure_object(dict)
    ctx.obj["DEBUG"] = debug


@cli.command()
@click.pass_context
def sync(ctx):
    click.echo(f"Debug is {'on' if ctx.obj['DEBUG'] else 'off'}")


if __name__ == "__main__":
    cli(obj={})

修改后运行python foo.py sync --help输出如下:

Usage: foo.py sync [OPTIONS]

全局选项:
  --debug / --no-debug
  --help                Show this message and exit.

Options:
  --help  Show this message and exit.

方案2:使用第三方库click-extra(最小代码改动)

如果可以引入外部依赖,click-extra已经内置了该功能,只需两步即可实现:

  1. 安装依赖:pip install click-extra
  2. 把原本的@click.group()替换为@click_extra.group()即可,无需其他代码修改。
    该方案除了自动展示全局选项外,还自带帮助文本高亮、命令自动补全等额外功能,适合快速开发场景。

内容的提问来源于stack exchange,提问作者Dror

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 02:21:03