parser.add_argument и parser.parse_args () с помощью jupyter - PullRequest
0 голосов
/ 19 марта 2019

Я пытаюсь запустить какой-то код с ноутбука 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, но я не могу найти простое решение.

Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 19 марта 2019

Когда я запускаю пустой блокнот и выполняю

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 в том, что вы не можете предоставить аргументы командной строки для записных книжек.

...