如何在jupyter笔记本中运行parse_args()?获取错误SystemExit:2

时间:2019-09-25 14:52:47

标签: python jupyter-notebook jupyter spyder argparse

我正在尝试做this Gooey GUI tutorial:,但实际上我无法越过他解析参数的第一段代码。我已经尝试过Spyder和Jupyter,并在这个街区停留了一个小时:

usage: ipykernel_launcher.py [-h] [-d D]
                             data_directory output_directory cust_file
ipykernel_launcher.py: error: the following arguments are required: data_directory, output_directory, cust_file
An exception has occurred, use %tb to see the full traceback.

SystemExit: 2

我的错误:

---------------------------------------------------------------------------
SystemExit                                Traceback (most recent call last)
<ipython-input-24-28f93e96a3df> in <module>
----> 1 args = parser.parse_args('')

~\Anaconda3\lib\argparse.py in parse_args(self, args, namespace)
   1747     # =====================================
   1748     def parse_args(self, args=None, namespace=None):
-> 1749         args, argv = self.parse_known_args(args, namespace)
   1750         if argv:
   1751             msg = _('unrecognized arguments: %s')

~\Anaconda3\lib\argparse.py in parse_known_args(self, args, namespace)
   1779         # parse the arguments and exit if there are any errors
   1780         try:
-> 1781             namespace, args = self._parse_known_args(args, namespace)
   1782             if hasattr(namespace, _UNRECOGNIZED_ARGS_ATTR):
   1783                 args.extend(getattr(namespace, _UNRECOGNIZED_ARGS_ATTR))

~\Anaconda3\lib\argparse.py in _parse_known_args(self, arg_strings, namespace)
   2014         if required_actions:
   2015             self.error(_('the following arguments are required: %s') %
-> 2016                        ', '.join(required_actions))
   2017 
   2018         # make sure all required groups had one option present

~\Anaconda3\lib\argparse.py in error(self, message)
   2499         self.print_usage(_sys.stderr)
   2500         args = {'prog': self.prog, 'message': message}
-> 2501         self.exit(2, _('%(prog)s: error: %(message)s\n') % args)

~\Anaconda3\lib\argparse.py in exit(self, status, message)
   2486         if message:
   2487             self._print_message(message, _sys.stderr)
-> 2488         _sys.exit(status)
   2489 
   2490     def error(self, message):

SystemExit: 2

完整追溯:

sys.argv

我已经检查了Stack Overflow上的此错误,但是建议的答案对我而言不起作用,或者对我来说不够详细,无法找出问题所在。

我知道应该在命令行中使用它,但是有什么方法可以在Jupyter或Spyder中遵循上述教程?

编辑:不确定是否有帮助,但是不确定['C:\\Users\\s\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py', '-f', 'C:\\Users\\s\\AppData\\Roaming\\jupyter\\runtime\\kernel-cc697613-14f5-4979-a353-6112886aba45.json'] 的输出:

Stream.of("foo")

1 个答案:

答案 0 :(得分:0)

在笔记本或交互式会话中,您可以使用

测试argparse的设置
args = parser.parse_args('dir1 dir2 foobar'.split())
print(args)

parse_args()解析sys.argv[1:]列表,该列表来自shell命令。要查看它,请使用:

import sys
print(sys.argv)

您很有可能会看到与jupyter服务器相关的字符串。

提供列表时,将对其进行解析,而不是默认列表。

您甚至可以使用args = argparse.Namespace(foo='bar', x=2)args仅需要具有其余代码期望的属性。