parser.add_argument和parser.parse_args()与jupyter(pa

2019-10-30 07:14发布

我想运行一些代码有jupyter笔记本,但是从一开始,我有问题。

事实上,它看起来像我不能使用以下命令:

parser.add_argument('--lr', default=0.1, type=float, help='learning rate')
parser.add_argument('--resume', '-r', action='store_true', help='resume from checkpoint')

用法: ipykernel_launcher.py [-h] [--lr LR] [--resume]ipykernel_launcher.py给出错误: unrecognized arguments: -f

和:

args = parser.parse_args()

/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/argparse.py in parse_args(self, args, namespace)
   1750         if argv:
   1751             msg = _('unrecognized arguments: %s')
-> 1752             self.error(msg % ' '.join(argv))
   1753         return args
   1754 

/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/argparse.py in error(self, message)
   2499         self.print_usage(_sys.stderr)
   2500         args = {'prog': self.prog, 'message': message}
-> 2501         self.exit(2, _('%(prog)s: error: %(message)s\n') % args)

/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/argparse.py in exit(self, status, message)
   2486         if message:
   2487             self._print_message(message, _sys.stderr)
-> 2488         _sys.exit(status)
   2489 
   2490     def error(self, message):

SystemExit: 2

我见过一些人试图用jupyter和arg_parse时已经有这个问题,但我不能找到一个简单的解决方案。

谢谢您的帮助!

Answer 1:

当我启动一个空白的笔记本电脑和执行

import sys
sys.argv

我得到

['/usr/local/lib/python3.6/dist-packages/ipykernel_launcher.py',
 '-f',
 '/run/user/1000/jupyter/kernel-b2d72478-6aaa-4206-9bf3-38fc1a0fd303.json']

parse_args()使用sys.argv列表“正常”来自于的呼唤你的脚本外壳。 这是命令行字符串列表。

sys.argv ,你的脚本看到包括该-f参数,通过创建jupyter

你可以使用parse_known_args()使您的解析器不会引发此错误。 但是,你不会帮你--lr-r参数-因为jupyter's自己的解析器将拒绝他们。

以前的SO问题的实质是,你不能为笔记本电脑提供命令行参数。



文章来源: parser.add_argument and parser.parse_args() with jupyter