argparse необязательный подпараметр (для --version)

У меня есть следующий код (с использованием Python 2.7):

# shared command line options, like --version or --verbose
parser_shared = argparse.ArgumentParser(add_help=False)
parser_shared.add_argument('--version', action='store_true')

# the main parser, inherits from `parser_shared`
parser = argparse.ArgumentParser(description='main', parents=[parser_shared])

# several subcommands, which can't inherit from the main parser, since
# it would expect subcommands ad infinitum
subparsers = parser.add_subparsers('db', parents=[parser_shared])

...

args = parser.parse_args()

Теперь я хотел бы иметь возможность вызывать эту программу, например, с - версией добавлен к обычной программе или к некоторой подкоманде:

$ prog --version
0.1

$ prog db --version
0.1

В принципе, мне нужно объявить необязательные подпараметры. Я знаю, что это действительно не поддерживается , но есть ли обходные пути или альтернативы?

Изменить: я получаю сообщение об ошибке:

$ prog db --version
# works fine

$ prog --version
usage: ....
prog: error: too few arguments

19
задан n611x007 7 August 2015 в 11:48
поделиться