Python单击:如何更改全局上下文的'info_name'值
在使用Click进行命令行处理的Python脚本中,我想在全局上下文中更改Python单击:如何更改全局上下文的'info_name'值,python,python-3.x,parameter-passing,command-line-interface,python-click,Python,Python 3.x,Parameter Passing,Command Line Interface,Python Click,在使用Click进行命令行处理的Python脚本中,我想在全局上下文中更改info\u名称(以便修改帮助输出) 下面是一个精心设计的最小示例mycmd.py,我尝试使用context\u设置: import click CONTEXT_SETTINGS = dict(info_name="hallo") @click.command('mycmd', context_settings=CONTEXT_SETTINGS) @click.pass_context def click_cli(ct
info\u名称
(以便修改帮助输出)
下面是一个精心设计的最小示例mycmd.py
,我尝试使用context\u设置
:
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
中的参数(这就是上下文设置结束的地方)无法覆盖硬编码的info\u name=info\u name
参数。如何执行此操作?使用cli函数的prog\u name
参数,更改帮助名称(info\u 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.