运行问题单击命令组

时间:2016-10-26 16:18:23

标签: python python-3.x python-click

我遇到了命令组的问题。我一直关注this guide

#!/usr/bin/env python

import click


@click.group()
@click.option("--template-id", prompt="Template ID", help="The template to use.")
@click.option("--lang", prompt="Langcode", help="The language to use.")
def cli(template_id, lang):
    pass


@cli.command()
@click.argument('template-id')
@click.argument('lang')
def upload_translations(template_id, lang):
    pass


if __name__ == "__main__":
    cli()

运行它会导致问题:

» ~/cli.py upload_translations --template-id=xxxxx --lang=ja 
Template ID: sdf
Langcode: asdf
Error: no such option: --template-id
  1. 为什么点击请求选项?我已经在命令行上传递了它!
  2. 为什么会出现错误:no such option: --template-id

1 个答案:

答案 0 :(得分:1)

--template-id选项不是upload_translations命令的选项;它是基础cli的一个选项。所以你会这样称呼:

./cli.py --template-id=xxxxxx --lang=ja upload_translations ...

此外,您在--langcli上都有upload_translations选项。这意味着这也是有效的:

./cli.py --template-id=xxxxxx upload_translations --lang=ja ...

这有点令人困惑;你可能想要从一个或另一个中移除--lang选项,或者如果它们实际上不是同一个东西,则在这两个命令之一中给它一个不同的名称。