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

项目场景:

IDE当中代码使用了parser.parse_args(),当在jupyter下调用时出错。


问题描述

报错:

usage: ipykernel_launcher.py [-h] [--data_dir DATA_DIR]
                             [--output_dir OUTPUT_DIR]
                             [--embedding_path EMBEDDING_PATH]
                             .....
                             
ipykernel_launcher.py: error: unrecognized arguments: -f /home/xxx/.local/share/jupyter/runtime/kernel-0fad9201-af20-4945-86b4-eeafe5b0d8b2.json
An exception has occurred, use %tb to see the full traceback.

SystemExit: 2


原因分析:

这是因为调用parser.parse_args()会读取系统参数:sys.argv[],命令行调用时是正确参数,而在jupyter notebook中调用时,sys.argv的值为ipykrnel_launcher.py:

['/home/xxx/anaconda3/envs/pt/lib/python3.8/site-packages/ipykernel_launcher.py',
 '-f',
 '/home/xxx/.local/share/jupyter/runtime/kernel-0fad9201-af20-4945-86b4-eeafe5b0d8b2.json']

解决方案:

解决方案有两种,一种需要修改代码,第二种只需要在jupyter中设置sys.argv。

一、修改代码

将parser.parse_args() 改为 parser.parse_known_args()[0]

import argparse
parser = argparse.ArgumentParser()
args = parser.parse_known_args()[0]

缺点

需要修改代码,不优雅。

修改系统参数

在jupyter中设置sys.argv。

1.获取正确的sys.argv

比如输入命令行为:

python run.py

其sys.argv为:

['run.py']

提示:也可以在运行代码中添加print(sys.argv)获取,形式如下:

import sys
print(sys.argv)

修改sys.argv

在jupyter中添加如下代码:

import sys
sys.argv = ['run.py']

代码中的,‘run.py’修改为当前运行代码所需的sys.argv

强迫症不想修改代码的,可以用第二种方法试试。

参考文献:
tf2.2运行SSD目标检测,出现错误ipykernel_launcher.py: error: unrecognized arguments:

  • 69
    点赞
  • 98
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值