Jupyter中使用parse报错[args = pp.parse

编程入门 行业动态 更新时间:2024-10-19 08:53:18

Jupyter中使用parse<a href=https://www.elefans.com/category/jswz/34/1771188.html style=报错[args = pp.parse"/>

Jupyter中使用parse报错[args = pp.parse

在Jupyter Notebook中使用parse报错了,

pp = argparse.ArgumentParser(description='')
pp.add_argument('--dataset', type=str, choices=['pascal', 'coco', 'nuswide', 'cub'], required=True)
pp.add_argument('--num-pos', type=int, default=1, required=False, help='number of positive labels per image')
pp.add_argument('--num-neg', type=int, default=0, required=False, help='number of negative labels per image')
pp.add_argument('--seed', type=int, default=1200, required=False, help='random seed')
args = pp.parse_args()

报错信息如下:

usage: ipykernel_launcher.py [-h] --dataset {pascal,coco,nuswide,cub}[--num-pos NUM_POS] [--num-neg NUM_NEG][--seed SEED]
ipykernel_launcher.py: error: the following arguments are required: --dataset
An exception has occurred, use %tb to see the full traceback.
SystemExit: 2

问题不小,很头痛;
pp.add_argument('--dataset', type=str, choices=['pascal', 'coco', 'nuswide', 'cub'], required=True)
修改为:
pp.add_argument('--dataset', type=str, default='nuswide',choices=['pascal', 'coco', 'nuswide', 'cub'], required=False)
把后面的required=True,改为False,问题出在这,True代表一定要传入参数;
本来在Jupyter Notebook调用parser.parse_args()就有问题,但是在一般IDE运行.py文件时是不会出错的,修改为required=False之后,问题场景就和参考[1]一致了;

  • 为什么只在Jupyter Notebook里面出错:
    这是因为调用parser.parse_args()会读取系统参数:sys.argv[],命令行调用时是正确参数,而在jupyter notebook中调用时,sys.argv的值为ipykrnel_launcher.py;
    说人话,一般IDE会有让你输入参数的地方,Jupyter直接读取系统参数,不给你机会输入参数;

再加上default='nuswide',这是一个好习惯,特别是在Jupyter中;
下面是解决方案:

把不需要的参数去掉

method 1

args = pp.parse_known_args()[0]

method 2

args, _ = pp.parse_known_args()

参考

[1] 无需修改代码,解决ipykernel_launcher.py: error: unrecognized arguments: -f /home/报错
[2] chatgpt

注意一下问题场景,我最开始没有发现前面还有问题require那个地方,就只盯着args = pp.parse_args()那一句,有点傻;

更多推荐

Jupyter中使用parse报错[args = pp.parse

本文发布于:2023-12-04 20:12:33,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1662092.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:报错   parse   Jupyter   args   pp

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!