Как запустить сеанс отладки, используя переменные из интерактивного окна, на Python для VSCODE?

#python #visual-studio-code #jupyter-notebook #data-science #vscode-debugger

#python #visual-studio-code #jupyter-ноутбук #наука о данных #vscode-отладчик

Вопрос:

У меня есть файл ‘.py’, и я запускаю его функции в интерактивном окне Python (функция VSCODE, похожая на записную книжку). Все переменные и функции хранятся только в этой среде Jupyter. Они даже не доступны на терминале.

Img, который показывает переменные в моей среде Jupyter

Когда я нажимаю «Ячейка отладки» (как вы видите на img), начинается отладка с использованием среды Jupyter со всеми переменными, но она не останавливается на точках останова, которые я поставил. Как будто это не связано с VSCODE.

Если я наберу F5 или нажму «Запустить и отладить», начнется сеанс отладки, в котором будет запущен весь файл .py, а это не то, что я хочу.

В этом случае он может получить доступ к точкам останова, но не к моим переменным.

Я просто хочу отладить определенную часть своего кода, используя переменные, которые я уже создал. Должно быть, я пропустил что-то действительно простое.

Единственный ответ, который я могу найти в Интернете: «вы должны создать файл launch.json», но это не исправляет мою ситуацию.

Кто-нибудь знает, чего мне не хватает?

Ответ №1:

Когда я нажимаю «Ячейка отладки» в файле python, он выполняет результат в «Интерактивном» окне и может оставаться на точке останова, которую я установил, и я также могу видеть значение переменной, выполняемой в коде в «Интерактивном» окне :

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

Поскольку функция отладки кода python и «Интерактивная» функция предоставляются расширением python, а функция ядра Jupyter также зависит от расширения Jupyter, попробуйте переустановить эти два расширения и перезагрузить VS Code.

Моя среда:

VS Code: 1.53.1 (настройка пользователя)

python: 3.9.1

Расширения VS Code: Python(2021.1.502429796); Jupyter(2020.12.414227052); Pylance(2021.2.2).

ОС: Windows_NT x64 10.0.19041

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

1. Привет, Джилл, спасибо за ответ. На самом деле, он останавливается на точках останова, как вы сказали. Но когда я нажимаю «Перейти в», он ведет себя по-разному в зависимости от функции, в которую я вхожу. В некоторых функциях он просто переходит к коду, как и ожидалось. В других функциях он открывает другую вкладку с заголовком «<ipython-input-15-2027ded5d38c>» и выполняет там код, как будто он находится в памяти или что-то в этом роде. В этом случае он не останавливается ни на каких точках останова на этой другой вкладке. Обе функции были загружены правильно. Я не знаю, что может быть причиной такого другого поведения. У вас есть какие-нибудь идеи?

2. @ Энрике Кардозо — Что такое «<ipython-input-15-2027ded5d38c>»? Когда мы вызываем другие модули или методы в коде, отладка будет входить в вызываемый файл. Не могли бы вы привести пример, который может свести к минимуму повторение проблемы, с которой вы сталкиваетесь?

3. Я думаю, что я только что обнаружил ошибку, но пока не смог ее воспроизвести. Представьте, что я не могу войти в функцию ‘example1 ()’, (потому что она открывает ipython-input и т. Д.). Я только что обнаружил, что после того, как я нажимаю «Ячейка отладки» в ячейке example1 (), просто чтобы запустить ее внутри отладчика, «Шаг в» работает так, как должен. Похоже, что эта функция была загружена на Python, но не в расширении VS Code Debug. Я не знаю, почему это произошло, но, по крайней мере, теперь я знаю, как это исправить. Я собираюсь отметить ваш ответ как решение. Спасибо 🙂