Использование магических функций IPython в оболочке ipdb
При отладке Python script с помощью ipdb my_script.py
я хочу использовать магические функции IPython, такие как %paste
, %cd
в ipdb
оболочке отладки сеанса. Возможно ли и как?
Ответы
Ответ 1
В соответствии с ipdb Github repo магические функции IPython недоступны. К счастью, отладчик IPython предоставляет пару подсказок о том, как получить эту функциональность, не запуская отдельную оболочку IPython.
Вот что я сделал для запуска %cpaste
:
ipdb> from IPython import get_ipython
ipdb> shell = get_ipython()
ipdb> shell.find_line_magic('cpaste')()
Pasting code; enter '--' alone on the line to stop or use Ctrl-D.
:for i in range(0,5):
: print i
:--
0
1
2
3
4
Таким образом, вы можете пройти через свой код и получить доступ ко всем магическим функциям IPython с помощью метода find_line_magic(your_magic_function)
.
Ответ 2
Вы можете открыть оболочку IPython внутри стека, как это делает pdb. Выполните следующие действия:
- Импортировать embed() из IPython и поместить его внутри вашего кода.
- Запустите script
Пример:
from IPython import embed
def some_func():
i = 0
embed()
return 0
В оболочке Python:
>>> te.func()
IPython 1.0.0 -- An enhanced Interactive Python.
(...)
In [1]: %whos
Variable Type Data/Info
i int 0
In [2]:
Это то, что вы искали?