Отладка Python в ноутбуке jupyter

#python-3.x #debugging #breakpoints #pdb #ipdb

Вопрос:

Я пытаюсь понять отладку в ноутбуках jupyter. Согласно моему пониманию, применение breakpoint() -это способ сделать это, но я сталкиваюсь с несколькими проблемами, которые я описываю ниже. У меня есть файл с именем test_debugger.py , ./ который я использую в качестве опоры в своих небольших усилиях по пониманию.

 #./test_debugger.py

def fun1(a):
    print(a)
    breakpoint()
    if a > 3:
        print(a 1)
        breakpoint()
    print(a 2)
    breakpoint()
    return None
 

Установка:

 from test_debugger import *
 

Проблемы:

  • точка останова() входит в отладку интерактивной оболочки:
 print(5)
breakpoint()
fun1(4)
breakpoint()
 

Выполнение приведенного выше кода дает мне

 5
--Return--
None
> <ipython-input-2-4276bdd18b42>(2)<module>()
      1 print(5)
----> 2 breakpoint()
      3 fun1(4)
      4 breakpoint()

ipdb> 

 

Я нажимаю n и хочу перейти к следующей строке в ячейке, но, думаю, это связано с отладкой интерактивной оболочки. При нажатии n я получаю:

 ipdb> n
    [... skipped 1 hidden frame]

    [... skipped 1 hidden frame]

    [... skipped 1 hidden frame]

    [... skipped 1 hidden frame]

> /home/nitin/miniconda/envs/nyraml386/lib/python3.8/site-packages/IPython/core/interactiveshell.py(3330)run_ast_nodes()
   3328                     to_run.append((node, 'single'))
   3329 
-> 3330                 for node,mode in to_run:
   3331                     if mode == 'exec':
   3332                         mod = Module([node], [])

ipdb> 
 

Вопрос: Как мне получить желаемую функциональность n (перейти к следующей строке в коде, написанном мной, оставаясь в той же оценке функции) и s (перейти к следующей строке в коде, написанном мной, при переключении области действия функции везде, где это необходимо).

  • PYTHONBREAKPOINT not available in jupyter notebook

The behavior expected: I have read that in case I want to disable all breakpoint() then I can set the env variable PYTHONBREAKPOINT to manage the behavior of breakpoint() . Specifically, I can set PYTHONBREAKPOINT=0 to disable breakpoint()

The behavior seen: PYTHONBREAKPOINT is not a variable available at all in jupyter notebook. Even if I set it equal to 0 that does not alter the disable breakpoint() . It is as if nothing happened

Question: How to manage breakpoint() when operating in jupyter notebooks. What is the way to bring in PYTHONBREAKPOINT into the notebook