python中意外的关键字参数单击
我在使用python click library(python版本2.7.11,windows 10,click版本6.6)时遇到此错误:python中意外的关键字参数单击,python,python-click,Python,Python Click,我在使用python click library(python版本2.7.11,windows 10,click版本6.6)时遇到此错误: 我能做些什么来修复这个错误?我做了一些挖掘。有时,最好的查找位置是出现错误的代码: 因此,我认为您需要设置allow\u extra\u args=True或resilive\u parsing=True 默认情况下,它们是: if args and not ctx.allow_extra_args and not ctx.resilient_parsing
我能做些什么来修复这个错误?我做了一些挖掘。有时,最好的查找位置是出现错误的代码: 因此,我认为您需要设置
allow\u extra\u args=True
或resilive\u parsing=True
默认情况下,它们是:
if args and not ctx.allow_extra_args and not ctx.resilient_parsing:
ctx.fail('Got unexpected extra argument%s (%s)'
% (len(args) != 1 and 's' or '',
' '.join(map(make_str, args))))
如果您愿意,可以通过注释这一个来测试它,我打赌您得到的错误将来自
annotate\u date
(下一个字母顺序)您似乎试图从\u nc或plot\u glm>调用plot\u map\u,代码中的实际参数如下所示:
resilient_parsing=False, allow_extra_args=None,
这将生成与您得到的相同的错误消息
plot_map_from_nc(any_time_data=False)
plot_glm(any_time_data=False)
来自nc的plot\u map\u的类型是click.core.Command
,传递给它的每个参数都将重定向到click.core.Command.main()
解决方案
调用这些可调用对象的正确方法是
plot_map_from_nc(args=None, prog_name=None, complete_var=None, standalone_mode=True, **extra)
如果要在代码中正常使用plot\u map\u from\u nc
,请使用其他名称定义它:
plot_map_from_nc(sys.argv[1:]) # or
plot_map_from_nc()
我想添加到@gdlmx的答案中,因为我试图从他们的答案中运行代码,但遇到了一些错误,需要花一点时间来解析。我想加上这个作为一个评论,但不幸的是我没有足够的因果报应
此块中的代码将在最后一行引发错误:“SyntaxError:无效语法”
def __plot_map_from_nc__(... , any_time_data=True, ...):
do_your_job_here
# create an alias
plot_map_from_nc = __plot_map_from_nc__
# pass this alias to click
@plot_glm.command()
@click.argument('path_nc') # ...
@click.option('--xaxis_min', default=0.0, help='') # ...
plot_map_from_nc
# Now plot_map_from_nc becomes a 'click.core.Command' object while
# __plot_map_from_nc__ is still a normal function which can be invoke as
__plot_map_from_nc__(... , any_time_data=True, ...)
对这一点起作用的是:
def __plot_map_from_nc__(... , any_time_data=True, ...):
do_your_job_here
# create an alias
plot_map_from_nc = __plot_map_from_nc__
# pass this alias to click
@plot_glm.command()
@click.argument('path_nc') # ...
@click.option('--xaxis_min', default=0.0, help='') # ...
plot_map_from_nc
基本上,这个传统的decorator定义为您提供了一个define块来使用@decorator语法。老实说,这可能不是处理此问题的最佳方法,但由于click使用了太多的装饰程序来设置CLI,因此使用传统语法添加所有命令是不合理的。请从示例代码中删除与“任意时间数据”选项无关的所有选项,并检查语法,我不知道这会有什么帮助。我希望保留其他选项。这会有所帮助,因为其中一些选项已绑定到第三个模块,执行时发生的第一件事是语法错误,然后是名称错误,而不是您得到的类型错误。无法在单击6.6、python2.7.10、win7时重现错误消息。但我观察到另一个错误:plt.cm.RdBu
是一个绑定方法,它只接受一个参数。因此,应该将其更改为lambda:plt.cm.RdBu(10)
。修复此问题后,您的代码在我的计算机上正常运行。any\u time\u data
决不能转到的\uuuu init\uuu
构造函数。我不知道这是怎么在你的机器上发生的。如果您发布错误消息的完整回溯,可能会有所帮助。谢谢@busfault,我收到的错误消息与您找到的错误消息不同。我的错误是得到了一个意外的关键字参数
,而不是得到了意外的额外参数
。同时,注释掉你建议的行并不能消除错误。谢谢!抱歉搞砸了!感谢@busfault,感谢您的关注,我真的很感激回顾操作代码,他有:def plot\u map\u from\u nc(path_nc,out_path,var_name,xaxis_min=0.0,xaxis_max=1.1,xaxis_step=0.1,annotate_date=False,yr=0,date=-1,xlabel='',title='',tme_name=time',show_plot=False,any time_time_data=True,format='.2f',land bg=True,cmap=plt.cm.RdBu grid=False,fill_=False)
语法错误(即非def foo(条形):
)或者,正如您在回答中所建议的那样,正在使用参数调用来自\u nc的plot\u map\u
。@busfault:您是对的,操作代码甚至不会编译。因此我认为操作没有在此处发布完整脚本。错误可能是由于他/她的代码缺少部分。谢谢@gdlmx,我这样调用:plot\u map\u from\u nc(…,any_time_data=False,…)
。将更改为您的建议并检查这是否正确-而不是reddit-我们使用“rep”而不是“karma”:-)
plot_map_from_nc(sys.argv[1:]) # or
plot_map_from_nc()
def __plot_map_from_nc__(... , any_time_data=True, ...):
do_your_job_here
# create an alias
plot_map_from_nc = __plot_map_from_nc__
# pass this alias to click
@plot_glm.command()
@click.argument('path_nc') # ...
@click.option('--xaxis_min', default=0.0, help='') # ...
plot_map_from_nc
# Now plot_map_from_nc becomes a 'click.core.Command' object while
# __plot_map_from_nc__ is still a normal function which can be invoke as
__plot_map_from_nc__(... , any_time_data=True, ...)
def __plot_map_from_nc__(... , any_time_data=True, ...):
do_your_job_here
# create an alias
plot_map_from_nc = __plot_map_from_nc__
# pass this alias to click
@plot_glm.command()
@click.argument('path_nc') # ...
@click.option('--xaxis_min', default=0.0, help='') # ...
plot_map_from_nc
#define your original function
def __plot_map_from_nc__(... , any_time_data=True, ...):
do_your_job_here
#put @ decorator on a regular decorator expression
@plot_glm.command()
@click.argument('path_nc') # ...
@click.option('--xaxis_min', default=0.0, help='') # ...
def plot_map_from_nc(... , any_time_data=True, ...):
__plot_map_from_nc__(... , any_time_data=True, ...)