Python Click:如何为全局上下文更改`info_name`的值

问题描述 投票:1回答:1

在使用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参数。我该怎么办?

python python-3.x parameter-passing command-line-interface python-click
1个回答
0
投票

使用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.
© www.soinside.com 2019 - 2024. All rights reserved.