Ошибка в том, что вы возвращаетесь из своей функции до вызова оператора выхода. Так что он никогда не запускается. Здесь вам не нужен оператор возврата. Этот код должен работать:
import click
def print_version(ctx, param, value):
if not value or ctx.resilient_parsing:
return
click.echo('Version 1.0')
ctx.exit(0)
@click.command()
@click.option('--version', is_flag=True, callback=print_version,
expose_value=False, is_eager=True)
def hello():
click.echo('Hello World!')
hello()
Это выведет только Version 1.0
, а затем выйдет с кодом выхода 0
. Вы можете изменить код выхода, который хотите иметь, на любой в cox.exit(YOUR_EXIT_CODE)
, хотя вы, вероятно, захотите использовать для этого 0 в качестве кода выхода.
Если вы хотите проверить код выхода, вы можете выполнить свою программу, а затем запустите дополнительную команду в своей оболочке на основе unix, чтобы получить код выхода последней выполненной команды:
python3 FILE_NAME.py --version
echo $?