如何使用 python click 实现 --version?

How to implement --version using python click?

我想使用 python 点击实现 mycommand --version。我有这样的东西,但感觉有点笨拙。

@click.group(invoke_without_command=True, no_args_is_help=True)
@click.pass_context
@click.option('--version', 'version')
def cli(ctx, version):
    if version:
        ctx.echo(f'{sys.argv[0]} {__version__}')
        ctx.exit()

事实证明,click 有一个内置装饰器 click.version_option 来完成此操作。代码现在变成:

@click.group()
@click.version_option(__version__)
@click.pass_context
def cli(ctx):
    pass

您可以使用 click.version_option 装饰器来实现 --version 选项。

如果您的 setup.py 喜欢并点击 version 将自动阅读。

from setuptools import setup

setup(
    name='application',
    version='0.1',
    py_modules=['application'],
    install_requires=[
        'Click',
    ],
)

不带任何参数的 click.version_option 选项将从 setup.py 中读取版本。

@click.group(invoke_without_command=True, no_args_is_help=True)
@click.pass_context
@click.version_option()
def cli(ctx):
   ...

运行 和结果

$ application --version 
application, version 0.1