Python multiple click.options-获得意外的关键字参数

Python multiple click.options-获得意外的关键字参数,python,python-click,Python,Python Click,在使用python click时,我无法将选项传递给其中一个方法。请考虑以下代码。 import click @click.command() @click.option('--config', default='default.cfg', help = 'comfiguration file') @click.option('--port', default=9093) def foo(config_name, port): print('Function has been succ

在使用python click时,我无法将选项传递给其中一个方法。请考虑以下代码。

import click

@click.command()
@click.option('--config', default='default.cfg', help = 'comfiguration file')
@click.option('--port', default=9093)
def foo(config_name, port):
    print('Function has been successfully called..!')

if __name__ == '__main__':
    foo()
我得到的错误是:

TypeError: foo() got an unexpected keyword argument 'config
stacktrace是:

Traceback (most recent call last):
  File "temp.py", line 10, in <module>
    foo()
  File "/home/sagar/anaconda3/lib/python3.6/site-packages/click/core.py", line 722, in __call__
    return self.main(*args, **kwargs)
  File "/home/sagar/anaconda3/lib/python3.6/site-packages/click/core.py", line 697, in main
    rv = self.invoke(ctx)
  File "/home/sagar/anaconda3/lib/python3.6/site-packages/click/core.py", line 895, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/home/sagar/anaconda3/lib/python3.6/site-packages/click/core.py", line 535, in invoke
    return callback(*args, **kwargs)
回溯(最近一次呼叫最后一次):
文件“temp.py”,第10行,在
foo()
文件“/home/sagar/anaconda3/lib/python3.6/site packages/click/core.py”,第722行,在调用中__
返回self.main(*args,**kwargs)
文件“/home/sagar/anaconda3/lib/python3.6/site packages/click/core.py”,主目录第697行
rv=自调用(ctx)
文件“/home/sagar/anaconda3/lib/python3.6/site packages/click/core.py”,调用中第895行
返回ctx.invoke(self.callback,**ctx.params)
文件“/home/sagar/anaconda3/lib/python3.6/site packages/click/core.py”,调用中的第535行
返回回调(*args,**kwargs)
我不明白为什么会这样。关于
参数
,我读了一些类似的问题,人们不能使用
帮助
选项,但在这种情况下,我认为我没有做任何不受支持的事情


但有趣的是:如果我删除了
--config
选项(当然还有函数中的参数),那么它就可以正常工作。我确信一个人可以使用多个选项,我尝试过使用
type=string
,但也没有帮助。

您将选项命名为
--config
,因此click试图将名为
config
的参数传递给
foo
,但
foo
的签名中没有
config
。您可能希望编写
def foo(config,port):
而不是
def foo(config\u name,port):

如果需要,您可以重命名参数,请参见例如。