我认为您正在处理http://bugs.python.org/issue9253中讨论的错误
您subparsers
是一个位置论点。除非nargs='?'
(或*),否则总是需要这种参数。我认为这就是为什么您在2.7中收到错误消息的原因。
但是在最新的py 3发行版中,更改了测试所需参数的方法,并且使次解析器陷入了困境。现在,它们是optional
必需的。有一个建议的补丁/软糖可以argparse
像以前一样运行(需要子解析器条目)。我希望最终py3 argparse会还原为py2实践(可以接受required=False
参数)。
因此args.sp is None
,您可能需要sys.argv[1:]
在致电之前进行测试,而不是进行测试parse_args
。Ipython
这样做是为了产生自己的帮助消息。