You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用argparse定义参数运行Python代码报SystemExit 2错误如何解决

报错根本原因

你在定义-m/--mode参数时指定了required=True,将其设为了必填命令行参数,运行脚本时没有传入该参数,argparse模块检测到必填参数缺失就会主动抛出该错误并终止程序,返回系统退出码2。

排查思路
  • 核对执行脚本的完整命令,确认是否漏加-m或--mode参数,直接执行python 脚本名.py不会自动传入你自定义的参数。
  • 如果是在PyCharm、VSCode等IDE中直接点击运行按钮执行代码,IDE默认不会携带自定义命令行参数,需要检查运行配置中是否添加了对应参数。
  • 可以在解析参数前添加代码打印实际传入的参数列表,确认argparse接收的参数是否符合预期:
    import sys
    print(sys.argv)
    
解决方法

方法1:命令行运行时主动传参

执行脚本时带上mode参数,合法取值为train或test,参考命令:

# 训练模式示例
python 你的脚本文件名.py -m train
# 测试模式示例,可搭配权重参数使用
python 你的脚本文件名.py -m test -w ./weights/训练好的权重文件路径

方法2:配置IDE运行参数

  • PyCharm:右上角打开当前脚本的「编辑配置」页面,在「参数/Parameters」输入框中填入-m train后保存即可。
  • VSCode:打开对应运行配置的launch.json文件,在配置项的args数组中添加"-m", "train"。

方法3:临时调试修改参数配置

如果是本地调试阶段不想每次传参,可以暂时把required=True改为required=False,同时添加默认值,调试完成后再改回必填即可:

parser.add_argument('-m', '--mode', type=str, required=False, default="train",
                    help='either "train" or "test"')

注意:你代码里的"是HTML转义字符,实际写代码时要替换为正常的双引号或单引号。

内容的提问来源于stack exchange,提问作者Ahead

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 18:54:04