Как отладить приложение JupyterDash с помощью VSCode?

#python #visual-studio-code #plotly #plotly-dash #jupyterdash

Вопрос:

Это будет пост с самостоятельным ответом, но это означает только то, что у меня есть идея решения, и что я очень хочу услышать о более эффективных и стабильных подходах к рассматриваемой проблеме.


Я хотел бы знать, как вы можете объединить возможности JupyterDash и VSCode для запуска процесса отладки .ipynb файла, который включает в себя все следующие шаги:

  1. вхожу в код,
  2. запуск кода строка за строкой,
  3. проверка переменных,
  4. установка точек останова,
  5. проверка обратных вызовов и
  6. интерактивное редактирование переменных.

Я думаю, что перепробовал все мыслимые комбинации:

  • Войдите в код с помощью F10
  • Run > Start Debugging (F5) из меню VSCode
  • Run and Debug (ctrl Shift D) из меню записной книжки Jupyter
  • Проверка переменных с помощью JUPYTER:VARIABLES консоли отладки VSCode

И все же я не чувствую, что нашел рабочий процесс, который на 100% удовлетворяет, когда дело доходит до интерактивности и стабильности.


Информация о системе:

 Python 3.9.6
VScode 1.60.2
Plotly 5.1.0
JupyterDash 0.4.0
 

Ответ №1:

Я буду основывать это предложение на представленном здесь коде для создания базового приложения dash с интерактивной фигурой и раскрывающимся списком, который запускает обратный вызов:

введите описание изображения здесь


Часть 1 и 2 — Ввод кода и выполнение кода строка за строкой


По умолчанию для .ipynb файла F10 a в VSCode будет активирован Step into function и помещена желтая стрелка в первой строке ячейки. Затем вы можете пройти через свой код строка за строкой, нажав F10 еще раз.

Рисунок 1.1 — Переход в код с F10

введите описание изображения здесь


Часть 3. Проверка переменных


Пройдя через df = px.data.tips() него , вы можете найти переменную JUPYTER:VARIABLES в разделе Debug Console :

Рисунок 3.1 — Консоль отладки и переменные

введите описание изображения здесь

Вы также можете просмотреть содержимое df , нажав на значок, выделенный выше, чтобы Show variable in data viewer :

Рисунок 3.2 — Средство просмотра данных

введите описание изображения здесь


Часть 4. Установка точек останова


Если в обратном вызове происходит какая-то обработка данных, вы можете установить точку останова внутри обратного вызова:

Рисунок 4.1 — Установка точки останова.

введите описание изображения здесь

Часть 5. Проверка обратных вызовов

Чтобы процесс перешел к этой конкретной точке останова, вы можете нажать F5 или даже запустить обратный вызов через приложение Dash, созданное в этом примере кода. Например, выбрав aggsunset из выпадающего меню:

Рисунок 5.1 — Сделайте выбор для запуска отладки обратного вызова

введите описание изображения здесь

Теперь вы должны заметить, что на самой фигуре ничего не происходит. И если вы вернетесь к VSCode, вы увидите, что процесс отладки перешел к вашей точке останова.

Рисунок 5.2 — Код остановки точки останова после запуска обратного вызова

введите описание изображения здесь

Как вы можете видеть, новая переменная определяется в обратном вызове как df2 = df.copy() . Как ни странно, но теперь вы можете видеть только локальные переменные обратного вызова:

Рисунок 5.2 — Переменные Jupyter при отладке

введите описание изображения здесь

Но одна приятная вещь здесь заключается в том, что вы можете проверить ввод из раскрывающегося списка в своем приложении, который:

 colorscale = 'agsunset'
 

Что еще круче, так это то, что каждый раз, когда вы меняете значение выпадающего списка и запускаете обратный вызов, значение обновляется в разделе JUPYTER:VARIABLES :

Раздел 6 — Интерактивное редактирование переменных

Рисунок 6.1 — Изменение переменных при отладке обратных вызовов

введите описание изображения здесь

Если вы перейдете на DEBUG CONSOLE вкладку, вы можете поближе ознакомиться с df2 df2.tail() :

Рисунок 6.2 — Проверка новых переменных

введите описание изображения здесь

И вы даже можете добавить новую колонку с df2['new_var] = 1 :