当前位置: 首页 > 知识库问答 >
问题:

为什么我使用click。参数PRODUCT“获得意外的关键字参数“help”?

卞昀
2023-03-14

运行以下代码会导致此错误:

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'

为什么会发生这种错误?

共有3个答案

岳承悦
2023-03-14

单击库不允许-help内的参数单击。参数(包括编写此注释时的当前版本6.7)。但是,您可以在单击中使用-help参数。选项
您可以在以下位置查看当前的单击文档:http://click.pocoo.org/6/documentation/或以前在http://click.pocoo.org/5/documentation/这种行为最近没有改变。那么,它就是一团。这不是一个错误。

尉迟兴修
2023-03-14

您正在将命令定义为参数。请注意,与您在此处尝试的方法相比,单击有更好的方法来定义命令。

@click.group()
def main():
    pass

@main.command()
def start():
    """documentation for the start command"""
    print("running command `start`")

@main.command()
def stop():
    """documentation for the stop command"""
    print("running command `stop`")

if __name__ == '__main__':
    main()

将产生以下默认帮助文本:

Usage: test_cli.py [OPTIONS] COMMAND [ARGS]...

Options:
  --help  Show this message and exit.

Commands:
  start  documentation for the start command
  stop   documentation for the stop command

话虽如此,如果您真的需要参数,您不能使用help参数。单击留档确实指出您应该记录自己的参数。然而,我不知道如何做到这一点。有什么提示吗?

编辑

如注释中所述:这是为了与Unix标准保持一致,以便在主帮助文本中记录参数。

伊裕
2023-03-14

我一次又一次地遇到这个问题,因为跟踪输出与导致错误的参数不对应。注意跟踪中的ArgumentClass,这是您的提示。

“help”是单击时可接受的参数。选项。但是,单击库更倾向于记录自己的参数。点击@按钮。参数帮助参数导致此异常

这段代码有效:(注意@click.argument中缺少,help=“start | stop | restart”

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.
 类似资料:
  • 我尝试使用pandas DataFrame的pivot_table方法; 但是,我收到以下错误: 上述命令摘自Wes McKinney(pandas的创建者)的《Python用于数据分析》一书

  • 我有wiev功能: 装饰: "index"函数正常工作,但"细节"向下错误: TypeError:包装器()获得意外的关键字参数“id” P.S.id参数在url模式中

  • 我试图用Python的Pymoo库设置我的优化,我使用他们的“入门”指南,但传递我自己的独立变量,也不使用约束。我使用指南中的示例函数得到了相同的结果(我在下面的代码中注释了它们)。 代码如下: 当我打印出问题类中_evaluate_elementwise方法中的kwargs时,我确实得到了它是算法对象: {'算法': 我很难理解它是如何将algorithm对象作为_evalute的参数的,它接受

  • 我将我的项目从Django 1.11升级到2.2,做了所有的更改,但带来了新的错误,说login()得到了一个意想不到的关键字参数template_name。它与Django 1.11的前一个版本运行良好(所有其他网址都在工作,只有着陆页给出了错误)。我找不到任何关于这个问题的参考资料。以下是该问题的错误、网址和视图。 着陆\urls.py 着陆\views.py C:\Users\User\ve

  • 我试图使用以下代码从上面的数据框创建一个有序的类别- 但是它给出了错误:astype()得到了一个意外的关键字参数“categories”。

  • 我正在尝试转换大熊猫的unix时间。我从一个csv文件中读取了这个,但是当我试图转换它时,我得到了上面的错误。 完全回溯 附加信息: 熊猫的版本是:0.8。0 操作系统:Debian,使用sudo apt get install python pandas安装(根据官方网站) 样本数据