Python 单击:如何更改全局上下文的 `info_name` 的值

Python Click: How to change the value of `info_name` for the global context

在使用 Click 进行命令行处理的 Python 脚本中,我想在全局上下文中更改 info_name(以便修改帮助输出)。

这是一个人为的最小示例 mycmd.py,我尝试使用 context_settings:

import click

CONTEXT_SETTINGS = dict(info_name="hallo")

@click.command('mycmd', context_settings=CONTEXT_SETTINGS)
@click.pass_context
def click_cli(ctx):
   pass

click_cli()

然而,当我 运行 这个带有 python mycmd.py --help 的脚本时,我得到了回溯:

...
  File ".../click/core.py", line 639, in make_context
    ctx = Context(self, info_name=info_name, parent=parent, **extra)
TypeError: type object got multiple values for keyword argument 'info_name'

所以问题是 **extra 中的参数(这是 context_settings 结束的地方)不能覆盖硬编码的 info_name=info_name 参数。我该怎么做?

使用 cli 函数的 prog_name 参数,更改帮助名称 (info_name),例如:

cli(prog_name='hallo')

测试代码:

import click

@click.command('mycmd')
@click.pass_context
def cli(ctx):
    pass

cli(['--help'], prog_name='hallo')

结果:

Usage: hallo [OPTIONS]

Options:
  --help  Show this message and exit.