Можно ли запускать команды в IPython с помощью отладки?
Вот мои действия в IPython:
> import my_module
> import ipdb
Теперь в моем модуле отсутствует исполняемый код, он только объявляет классы. Поэтому я хочу сделать выражение:
> g = my_module.Graph()
> f = open('test.osm')
> g.from_osm(f)
Я хочу поставить точку останова внутри Graph.from_osm, не редактируя файл. Я не хочу помещать последние строки в файл и делать python -m ipdb ...
. Я просто хочу запускать команды и отлаживать.
Возможно ли это?
добавил: Я вижу, возможно
%run -d script_name
или
> import pdb
> pdb.run('statement')
но это невозможно сделать ipdb.run('statement')
, там .run
в ipdb
!
Ответы
Ответ 1
Поскольку IPython 3.2.2
, магия %debug
, если задана аргумент (одна строка или ячейка), выполняется в соответствии с отладчик.
- Он прерывается перед выполнением чего-либо, давая вам возможность установить точки останова и/или начать шаг за кодом.
- И он принимает аргумент
--breakpoint
, который устанавливает еще одну точку останова (как часть команды, она будет сохранена в истории команд, сохраняя при этом типизацию для повторных вызовов).
Ответ 2
Возможно, команды "magic" % debug и/или % pdb в IPython могут вам помочь.