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