我写这个简短的小程序是为了自学Python的面向对象设计。但我现在得到了一个非常令人困惑的错误。在
Traceback (most recent call last):
File "main.py", line 97, in <module>
cli()
File "C:\Python27\lib\site-packages\click\core.py", line 716, in __call__
return self.main(*args, **kwargs)
File "C:\Python27\lib\site-packages\click\core.py", line 695, in main
with self.make_context(prog_name, args, **extra) as ctx:
File "C:\Python27\lib\site-packages\click\core.py", line 620, in make_context
self.parse_args(ctx, args)
File "C:\Python27\lib\site-packages\click\core.py", line 874, in parse_args
value, args = param.handle_parse_result(ctx, opts, args)
File "C:\Python27\lib\site-packages\click\core.py", line 1390, in handle_parse_result
value = self.full_process_value(ctx, value)
File "C:\Python27\lib\site-packages\click\core.py", line 1675, in full_process_value
return Parameter.full_process_value(self, ctx, value)
File "C:\Python27\lib\site-packages\click\core.py", line 1359, in full_process_value
value = self.process_value(ctx, value)
File "C:\Python27\lib\site-packages\click\core.py", line 1349, in process_value
return self.type_cast_value(ctx, value)
File "C:\Python27\lib\site-packages\click\core.py", line 1332, in type_cast_value
return self.type(value or (), self, ctx)
File "C:\Python27\lib\site-packages\click\types.py", line 38, in __call__
return self.convert(value, param, ctx)
File "C:\Python27\lib\site-packages\click\types.py", line 472, in convert
raise TypeError('It would appear that nargs is set to conflict '
TypeError: It would appear that nargs is set to conflict with the composite type arity.
此错误由基于click的CLI引发。这很奇怪,因为引发错误的选项之一没有任何参数。在
^{pr2}$我已经为这个回溯挣扎了一天,但没有结果。有什么建议吗?谢谢!在
编辑:我修复了它,但是我在这个过程中创建了一个逻辑错误。在
default=(None, None, None, None, None, None))
我在click选项new_profile中添加了这个参数。但当你用其他的论点时,它就会运行
Profile.new_profile(None, None None, None, None None)
因此在.profile
中创建一个名为none.json
的新文件,所有值都为null。所以我想我从技术上解决了这个问题,但我创造了一个更大的问题。在
有几种方法可以解决这个问题。在
不要使用
click.Tuple
Tuple
用于非统一类型的多值参数。由于您使用的是6个字符串,因此可以更简单地使用:将
click.Tuple
与默认值一起使用正如您所发现的,如果指定默认值,则可以使用
^{pr2}$click.Tuple
。在然后您可以确认您没有获得默认值,例如:
相关问题 更多 >
编程相关推荐