При отладке сценария Python с использованием ipdb my_script.py
, я хочу использовать IPython магические функции, такие как %paste
, %cd
в ipdb
сеанс отладки оболочки. Возможно ли и как?Использование IPython магические функции в IPDB оболочке
ответ
В соответствии с ipdb Github repo функции магического IPython недоступны. К счастью, IPython debugger дает пару подсказок о том, как получить эту функциональность, не запуская отдельную оболочку 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)
.
Вы можете открыть оболочку IPython внутри стека, как это делает pdb. Выполните следующие действия:
- Импортируйте embed() из IPython и поместите его в свой код.
- Запуск сценария
Пример:
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]:
Было ли это то, что вы искали?
Я хотел бы использовать магические функции без импорта каких-либо функций IPython в свой код. – fossilet
Почему? это просто вопрос личного удобства? – gg349
@flebool, было бы довольно удобно получить доступ к магическим функциям везде и всякий раз, когда моя программа будет остановлена (приостановлена) отладчиком без необходимости кода точек останова в моей программе. – fossilet
- 1. Поддержка IPython в отладчике ipdb
- 2. Использование объекта IPython? in ipdb
- 3. Завершить вкладку IPython для ipdb
- 4. Джанго runserver внутри IPDB/IPython
- 5. pprint и ipdb в ноутбуке IPython
- 6. Магические функции в PHP и их использование?
- 7. Как работает `cat` в интерактивной оболочке ipython?
- 8. IPython не работает в оболочке Django
- 9. Вызов командной оболочки из функции в интерактивной оболочке IPython
- 10. Магические функции Global.asax
- 11. Устранение неполадок в Ipython: ImportError: нет модуля с именем 'ipdb'
- 12. Как автоматически завершить работу в iPython ноутбуке на ipdb?
- 13. Цветное представление объектов в оболочке терминала IPython
- 14. Как использовать магические команды IPython в редакторе Spyder?
- 15. Как добавить настраиваемый флаг в магические команды IPython? (.ipy files)
- 16. Python3 «магические функции» Трассировка стека
- 17. Как назначить глобальное пространство имен ipython из ipdb?
- 18. История на сессиях ipdb
- 19. IPython отладки посмертного: объем внешней функции
- 20. Магические методы Jupyter (iPython), зарегистрированные как str, а не вызываемые
- 21. IPDB/set_trace() висит
- 22. Использование схемы в оболочке
- 23. Как отменить ввод (не вывод команды) в оболочке iPython
- 24. Использование ipython engine в knitr
- 25. Как выполнить ручную перезагрузку файла в оболочке iPython
- 26. ipdb с модулем unittest python
- 27. Использование getopts в пользовательской функции в оболочке bourne
- 28. Использование столбца dataframe в качестве аргументов в функции - iPython
- 29. Использовать ipdb в Eclipse
- 30. Использование функции «exec» для запуска скрипта в оболочке интерпретатора
Можете ли вы передать контекст (например, локальные переменные) ipdb на 'cpaste'? –