Действительно ли возможно войти в ipython из кода?

Сервлет - это уровень на стороне сервера Java.

  • JSP - это сервлет с html
  • JSF - его компоненты основаны на библиотеках тегов
  • JSP - он конвертируется в сервлет один раз, когда сервер получил запрос.
78
задан Martijn Pieters 30 March 2015 в 10:28
поделиться

4 ответа

Существует проект ipdb , который встраивает iPython в стандартный pdb, поэтому вы можете просто выполнить:

import ipdb; ipdb.set_trace()

Его можно установить с помощью обычного pip install ipdb .

ipdb довольно короткий, поэтому вместо easy_installing вы также можете создать файл ipdb.py где-нибудь на своем пути Python и вставить в него следующее:

import sys
from IPython.Debugger import Pdb
from IPython.Shell import IPShell
from IPython import ipapi

shell = IPShell(argv=[''])

def set_trace():
    ip = ipapi.get()
    def_colors = ip.options.colors
    Pdb(def_colors).set_trace(sys._getframe().f_back)
109
ответ дан 24 November 2019 в 10:27
поделиться

Из документации IPython :

import IPython.ipapi
namespace = dict(
    kissa = 15,
    koira = 16)
IPython.ipapi.launch_new_instance(namespace)

запускает оболочку IPython программно. Очевидно, что значения в пространстве имен dict являются просто фиктивными значениями - на практике может иметь смысл использовать locals () .

Обратите внимание, что вы должны жестко запрограммировать это в ; он не будет работать так, как pdb . Если это то, что вы хотите, ответ DoxaLogos, вероятно, больше похож на то, что вы ищете.

3
ответ дан 24 November 2019 в 10:27
поделиться

Обычно, когда я использую ipython, я включаю автоматическую отладку с помощью команды «pdb» внутри него.

Затем я запускаю свой сценарий с помощью команды «run myscript.py» в каталог, в котором находится мой скрипт.

Если я получаю исключение, ipython останавливает программу внутри отладчика. Ознакомьтесь с командой справки по волшебным командам ipython (% magic)

8
ответ дан 24 November 2019 в 10:27
поделиться

Эквивалент

import pdb; pdb.set_trace()

с IPython выглядит примерно так:

from IPython.ipapi import make_session; make_session()
from IPython.Debugger import Pdb; Pdb().set_trace()

Это немного многословно, но полезно знать, если у вас не установлен ipdb. Вызов make_session требуется один раз для настройки цветовой схемы и т. Д., А вызовы set_trace можно размещать везде, где вам нужно прервать работу.

11
ответ дан 24 November 2019 в 10:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: