0

我在使用命令组时遇到问题。我一直在关注本指南

#!/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
4

1 回答 1

1

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

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

此外,您可以--lang选择 oncli和 on upload_translations。这意味着这也是有效的:

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

这有点令人困惑;您可能希望--lang从其中一个或另一个中删除该选项,或者如果它实际上不是同一件事,则在这两个命令之一中为其指定一个不同的名称。

于 2016-10-26T17:04:07.610 回答