Отладка в Python с помощью консоли

    Обычно библиотеки python хорошо документированы. Однако случается, что иногда документации не хватает, особенно если речь заходит о веб-фреймворках и о каком-нибудь параметре request с десятком-другим свойств.

    Здесь на помощь может прийти обычная питоновская консоль, которая может услужливо вывалиться в нужный момент прямо посреди исполнявшегося кода веб-сервиса.

    Если установлен IPython, то достаточно просто дописать в нужное место пару строк:

    from IPython.Shell import IPShellEmbed
    IPShellEmbed()()

    Выглядеть это может примерно так:

    Python console

    Помощь такого подхода неоценима — внятный список свойств и методов любого объекта, присутствующего в списке локальных переменных, по простому нажатию TAB+TAB. Если IPython не установлен, то можно довольствоваться и простой консолью:

    import code
    code.interact()

    Результат будет почти тем же, но консоль вывалится попроще.
    Реклама
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее

    Комментарии 8

      0
      import pdb
      pdb.set_trace() # некошерно? :)
        0
        спасибо за наводочку - попробуем
        • НЛО прилетело и опубликовало эту надпись здесь
            +2
            Еще один полезный инструмент для отладки консолью прямо в браузере: werkzeug
            Уже не представляю разработку без него
              0
              Извините, лениво сейчас проверить самому, но даёт ли IPython консоль аналоги команд 's', 'n', 'c' и других из pdb?
                0
                pdb как классический отладчик позволяет проследить поведение написанного кода, в то время как вызов python/ipython просто выкидывает консоль, в которой разработчик может написать любой код и посмотреть, как он будет выполняться. После выхода из консоли исполнение кода продолжется со следующей после IPShellEmbed()() строки как ни в чем не бывало.
                  0
                  Возможно ли пошаговое пошаговое вылполнение кода, из ipython консоли, следующего за вызовом этой самой консоли?
                    0
                    Нет. По крайней мере, я такого способа не знаю.

              Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

              Самое читаемое