如何为Python click.version_option添加-V别名选项?
给Click的版本选项添加短选项名(-V)
问题
现有代码可通过命令 py main.py --version 打印库版本:
import click version = "1.0.0" @click.version_option(version=version) def main(): pass if __name__ == "__main__": main()
想要为版本选项添加-V短选项,但尝试直接传入多个选项名的写法均报错无效:
@click.version_option(version=version, "--version", "-V") @click.version_option("--version", "-V", version=version)
也未找到类似click.Context.help_option_names的全局配置方式。
解决方法
方法1:通过param_decls传递选项名元组
click.version_option的第一个参数是param_decls,用于定义选项的名称,将--version和-V放在元组中作为第一个参数传入即可:
import click version = "1.0.0" @click.version_option(("--version", "-V"), version=version) def main(): pass if __name__ == "__main__": main()
此时运行py main.py -V或py main.py --version都能正常打印版本信息。
方法2:全局配置版本选项名(Click 8.x及以上)
如果需要全局统一配置所有命令的版本选项名,可以通过修改上下文的version_option_names属性实现:
import click version = "1.0.0" @click.group() @click.pass_context def main(ctx): # 全局设置版本选项的名称 ctx.version_option_names = ["--version", "-V"] @main.command() @click.version_option(version=version) def my_command(): pass if __name__ == "__main__": main()
内容的提问来源于stack exchange,提问作者avocado
相关产品推荐
相关产品推荐

