文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

解决SystemExit: 2,args = parser.parse_args() 的问题,

2023-09-04 10:55

关注

报错:

 File "/home/barry/PycharmProjects/EEPC/detect.py", line 283, in parse_opt    opt = parser.parse_args()  File "/home/barry/anaconda3/envs/EEPC/lib/python3.9/argparse.py", line 1823, in parse_args    self.error(msg % ' '.join(argv))  File "/home/barry/anaconda3/envs/EEPC/lib/python3.9/argparse.py", line 2577, in error    self.exit(2, _('%(prog)s: error: %(message)s\n') % args)  File "/home/barry/anaconda3/envs/EEPC/lib/python3.9/argparse.py", line 2564, in exit    _sys.exit(status)SystemExit: 2

原因:

报错原因:
argparse 是一个旨在解析从命令行传递的参数的模块,您可以使用 argparse 来编译 参数内容。如果 argparse 认为参数无效,则退出,这通常在 python 中通过调用 sys.exit() 来完成,这会引发 SystemExit 错误,这就是您所看到的。
所以问题是你试图从交互式解释器(看起来像 ipython)中使用 argparse,此时程序已经启动,所以应该已经解析了 args。
 

解决方法一:

args = parser.parse_args()改成args = parser.parse_args(args=[])

原因分析:

args = parser.parse_args()
2.parse_args(args=["-n3","-b2"])#表示给n参数赋值为3,b参数赋值为2。其他参数默认。parse_args(args=[])#表示所有参数使用默认。

而我们的报错情况是形式1,一旦执行parse_args()语句,python系统就会执行读取参数的操作(我们看不到),此时jupyter notebook系统默认会给一个奇怪的参数:

因此:

将parse_args()由形式1换成形式2。

最后一行换成:

import argparseparser = argparse.ArgumentParser(description="Deep Gaussian Processes on MNIST")parser.add_argument("-n", "--num-epochs", default=5, type=int)parser.add_argument("-t", "--num-iters", default=60, type=int)parser.add_argument("-b", "--batch-size", default=1000, type=int)parser.add_argument("-lr", "--learning-rate", default=0.01, type=float)args = parser.parse_args(args=[])

解决方案二:

删除参数required=True,如果还不行的话按照再按照方法一方法添加

parser.add_argument("--model_path", type=str, required=True, default='/mnt/data_1/', help="The path to model parameters to be loaded.")parser.add_argument("--model_path", type=str, default='/mnt/data_1/', help="The path to model parameters to be loaded.")
args = parser.parse_args(args=[])

解决方案三:

开头添加:

参考链接:

python - SystemExit: 2 error when calling parse_args() within ipython - Stack Overflow

import syssys.argv=['']del sys

解决方法四:

添加一个接受上面那个参数的语句。

parser.add_argument('-f', type=str, default="读取额外的参数")
import argparseparser = argparse.ArgumentParser(description="Deep Gaussian Processes on MNIST")parser.add_argument("-n", "--num-epochs", default=5, type=int)parser.add_argument("-t", "--num-iters", default=60, type=int)parser.add_argument("-b", "--batch-size", default=1000, type=int)parser.add_argument("-lr", "--learning-rate", default=0.01, type=float)parser.add_argument("-f","--file",default="file")#接收这个-f参数args = parser.parse_args()print(args.file)

来源地址:https://blog.csdn.net/sinat_39620217/article/details/126579156

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯