如何使用 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
我想使用 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