在使用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.