Jupyter Notebook中运行argparse代码报错SystemExit:2求解决
解决Jupyter Notebook中argparse代码运行报错SystemExit:2的问题
报错原因:在Jupyter环境中,argparse.ArgumentParser().parse_args()默认读取系统命令行参数,但Notebook启动时并未传入代码中定义的-i/-p/-m等必填参数,argparse检测到必填参数缺失后直接抛出SystemExit终止程序,导致报错。
以下是几种可行的解决方法:
方法1:手动传入参数列表给parse_args()
直接在parse_args()中传入自定义的参数列表,替换成你的实际文件路径即可:
import argparse ap = argparse.ArgumentParser() ap.add_argument("-i", "--image", required=True, help="path to input image") ap.add_argument("-p", "--prototxt", required=True, help="path to Caffe 'deploy' prototxt file") ap.add_argument("-m", "--model", required=True, help="path to Caffe pre-trained model") ap.add_argument("-c", "--confidence", type=float, default=0.2, help="minimum probability to filter weak detections") # 手动传入参数,替换为你的实际路径 args = vars(ap.parse_args([ "-i", "/your/actual/image/path.jpg", "-p", "/your/actual/prototxt/path.prototxt", "-m", "/your/actual/model/path.caffemodel" # 若使用confidence默认值,可省略"-c"参数 ]))
方法2:修改参数为非必填并设置默认值
如果不想每次手动传参,可以将required=True改为False,同时给参数设置默认路径:
import argparse ap = argparse.ArgumentParser() ap.add_argument("-i", "--image", required=False, default="/default/image/path.jpg", help="path to input image") ap.add_argument("-p", "--prototxt", required=False, default="/default/prototxt/path.prototxt", help="path to Caffe 'deploy' prototxt file") ap.add_argument("-m", "--model", required=False, default="/default/model/path.caffemodel", help="path to Caffe pre-trained model") ap.add_argument("-c", "--confidence", type=float, default=0.2, help="minimum probability to filter weak detections") args = vars(ap.parse_args())
方法3:使用%run魔法命令传参
将代码保存为独立的.py文件(比如detect.py),然后在Jupyter单元格中用%run命令传入参数:
%run detect.py -i /your/image/path.jpg -p /your/prototxt/path.prototxt -m /your/model/path.caffemodel
内容的提问来源于stack exchange,提问作者Shady Emad
相关产品推荐
相关产品推荐

