【Jupyter】Jupiter notebook如何从命令行中读取参数?(argparse模块如何在jupyter中用于传递参数)

2022-09-21 10:18:45

问题产生

最近打算把cycleGAN的代码写个详细的注释,于是想用jupyter看一下中间的某些部分都是啥。结果就出现问题了,原来的代码中是给命令行直接run写的,用jupyter没法传递参数,即使你写了default,也会出现报错。
错误大概是这样的:

An exception has occurred, use %tb to see the full traceback.
ipykernel_launcher.py: error: unrecognized arguments: -f /share/home/li......
SystemExit:2

解决方法

解决办法非常简单:

  1. 对应命令行的不传递参数:
    在你的parser.add_argument里写好default。找到代码里的parser.parse_args()(command+f),改成parser.parse_args([])。如果还不行找找代码里是不是还有parser.parse_known_args(),把它改成parser.parse_known_args([])
  2. 对应命令行的传递参数:
    找到代码里的parser.parse_args(),改成这种形式parser.parse_args(['--modelname','cycleGAN'])

这个问题出现的原因大概是因为argparse这个模块写包时候的问题,对于jupyter这种情况会有点冲突。上述两种方法就是对应着命令行传参数和不传参数。具体的细节这篇文章解释的很清楚:https://zhuanlan.zhihu.com/p/55013625

  • 作者:小丫么小阿豪
  • 原文链接:https://blog.csdn.net/qq_43426078/article/details/123113134
    更新时间:2022-09-21 10:18:45