31

次のコードを実行すると、このエラーが発生します。

TypeError: init () が予期しないキーワード引数 'help' を取得しました

コード:

import click

@click.command()
@click.argument('command', required=1, help="start|stop|restart")
@click.option('--debug/--no-debug', default=False, help="Run in foreground")
def main(command, debug):
    print (command)
    print (debug)

if __name__ == '__main__':
    main()

完全なエラー出力:

$ python3 foo.py start
Traceback (most recent call last):
  File "foo.py", line 5, in <module>
    @click.option('--debug/--no-debug', default=False, help="Run in foreground")
  File "/home/cbetti/python/lib/python3/dist-packages/click-4.0-py3.4.egg/click/decorators.py", line 148, in decorator
    _param_memo(f, ArgumentClass(param_decls, **attrs))
  File "/home/cbetti/python/lib/python3/dist-packages/click-4.0-py3.4.egg/click/core.py", line 1618, in __init__
    Parameter.__init__(self, param_decls, required=required, **attrs)
TypeError: __init__() got an unexpected keyword argument 'help'

なぜこのエラーが発生するのですか?

4

5 に答える 5

43

トレース出力がエラーの原因となったパラメーターに対応していないため、これに何度も遭遇します。ArgumentClassトレースに注目してください。それがヒントです。

'help' は に受け入れられるパラメータ@click.optionです。ただし、クリック ライブラリは、独自の引数を文書化することを好みます。@click.argument helpパラメータがこの例外の原因です。

, help="start|stop|restart"このコードは機能します: ( inがないことに注意してください@click.argument)

import click

@click.command()
@click.argument('command', required=1)
@click.option('--debug/--no-debug', default=False, help="Run in foreground")
def main(command, debug):
    """ COMMAND: start|stop|restart """
    print (command)
    print (debug)

if __name__ == '__main__':
        main()

出力:

$ python3 foo.py start
start
False

ヘルプ出力:

Usage: test.py [OPTIONS] COMMAND

  COMMAND: start|stop|restart

Options:
  --debug / --no-debug  Run in foreground
  --help                Show this message and exit.
于 2015-07-01T23:30:49.777 に答える
1

引数名が url_Hook (camelCase) だったので、同じエラーが発生しました。url_hook に変更したら解決しました。

于 2018-09-18T22:19:31.220 に答える