对于我的玩具项目mpu
,我想要以下命令:
# Creates a Python project based on a template
$ mpu init
# Checks a Python project for style
$ mpu stylecheck
所以假设我有一个命令run_init()
,一个命令run_stylecheck()
和一个argparse.ArgumentParser
名为的对象parser
:
def run_init():
print('init is executed')
def run_stylecheck():
print('stylecheck is executed')
def get_parser(parser=None):
"""Get parser for packaging part."""
from argparse import ArgumentParser, ArgumentDefaultsHelpFormatter
if parser is None:
parser = ArgumentParser(description=__doc__,
formatter_class=ArgumentDefaultsHelpFormatter)
subparsers = parser.add_subparsers(dest='subparser_name')
pkg_init_parser = subparsers.add_parser('init')
return parser
get_parser().parse_args()
如何将这两个命令添加到它?
限制
请不要建议sys.argv
手动解析的解决方案,也不要click
。第一个不是一个选项,因为它太难扩展,第二个不是一个选项,因为我特别不想使用外部依赖项 - 尽管click
很棒。
https://stackoverflow.com/a/27529806/562769我认为这也不是一个选项,因为这将是很多不同的命令,并且提供解析器对象的子模块不会调用该对象。