2016-10-26 3 views
0

명령 그룹에 문제가 있습니다. 나는 this guide을 따라왔다.클릭 명령 그룹 실행 문제

» ~/cli.py upload_translations --template-id=xxxxx --lang=ja 
Template ID: sdf 
Langcode: asdf 
Error: no such option: --template-id 
  1. 왜 클릭이 옵션을 요청 :

    #!/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() 
    

    는 실행이 문제의 원인은? 이미 커맨드 라인에서이를 전달하고 있습니다!

  2. 왜 오류가 있습니까 : no such option: --template-id?

답변

1

--template-id 옵션은 upload_translations 명령의 옵션이 아닙니다. 그것은베이스 cli에 대한 옵션입니다. 그래서 당신은 그것을 좋아 부를 것이다 :

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

을 또한,이 cli에와 upload_translations에 모두 --lang 옵션이 있습니다. 어떤 의미일까요?

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

약간 혼란 스럽습니다. --lang 옵션을 하나 또는 다른 옵션에서 제거하거나 두 명령 중 하나에서 다른 이름을 지정하는 것이 좋습니다.

+0

의견을 보내 주셔서 감사합니다. 저는 인수와 옵션, 그리고 그룹 인수/옵션 대 명령 인수/옵션에 대해 혼란스러워했습니다. 그룹이 명령에 옵션을 전달할 수 있다고 생각했습니다. 클릭이 작동하는 방식을 리눅스 명령에 익숙하지 않기 때문에 조금 이상합니다. 클릭은 명령 앞에 몇 가지 옵션/인수가 있고 명령 뒤에는 몇 가지 옵션/인수가 있다고 예상하는 것 같습니다. Linux 명령은 옵션 위치와 관련하여 엄격하지 않습니다. – dangonfast