В Pycharm Как загрузить код в интерактивный отладчик?

Я хочу иметь возможность загружать и запускать несколько строк кода в интерактивный отладчик, чтобы убедиться, что код работает нормально. Таким образом, мне не нужно повторно запускать с начала кода, что занимает гораздо больше времени. Я попробовал два метода, но не работал. Исходя из R и Matlab, я предпочитаю эту функцию. Кто-нибудь может предложить?

Способ 1: Согласно интерактивной отладке оболочки с pycharm, можно загрузить код, набранный в редакторе pycharm, в интерактивный отладчик

1> set a debugging point
2> highlight the code you want to load to Python console
3> alt+shift+E

Когда я выполняю следующие действия: я устанавливаю точку отладки, отлаживаю код для запуска точки отладки и выбираю код, нажимая alt + shift + e. Вместо загрузки кода в консоль отладки он загружается в python консоль по умолчанию. У меня нет доступа к переменным и пакетам, которые я хочу отлаживать в контексте консоли python.

Мне нужно свести к минимуму консоль python, а затем запустить ее снова. Иногда он запускается в консоли отладчика. Ниже ответа предлагается "выбрать консоль, на которую вы хотите настроить таргетинг". Каков шаг? вы нажимаете на отладчик? затем выберите код и нажмите atl + shift + e? Я пробовал, он не работает.

EDIT: нашел официальный документ, но не очень полезен: https://www.jetbrains.com/help/pycharm/2017.1/loading-code-from-editor-into-console.html

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

Method2: Введите и экспериментируйте с кодом непосредственно в интерактивной консоли отладчика. Однако нет простого способа вернуть код (несколько строк) обратно в редактор. История консоли сортируется автоматически от самого нового до самого старого. При копировании из истории консоли у вас есть последняя строка желаемого кода в качестве первой строки в редакторе. Смотрите ниже темы, у меня такая же проблема. Как инвертировать порядок истории консоли в pycharm для копирования вставки?

Ответы

Ответ 1

Нажатие Alt + Shift + E вызовет команду "Выполнить выбор в консоли". Если уже нет открытой консоли, PyCharm откроет обычную (не отладочную) консоль Python.

Чтобы выполнить выбор в консоли отладчика, сначала нужно запустить отладчик. Вам нужно запустить script с помощью отладчика и приостановить его с помощью точки останова, тогда команда будет вести себя так, как ожидалось.

Если у вас несколько открытых консолей, например. один регулярный и один отладчик, вы должны активировать целевую консоль перед выполнением команды клавиатуры.

Ответ 2

Хорошо, так что я мог бы немного поработать над этим, но из-за моего использования R я почувствовал разочарование от запуска кода путем выбора. Например, если вы выберете блок кода, который инициализирует некоторые переменные с режимом отладки и позже удалит их в исходном состоянии, то может быть немного запутанным позже, если исходный код, который вы выборочно выполняете, изменяется. Кроме того, работа над фрагментом кода иногда приводит к ошибкам в заказе, но стремление запускать код сверху каждый раз, безусловно, хорошо связано с временем ожидания, необходимым для выполнения определенных задач.

Итак, вопрос: когда вы перезапускаете pycharm, делает ли консоль python то, что вы использовали в прошлом, когда вы открыли pycharm? Нет, это не так, но когда вы запускаете свою программу, сюжет бесцеремонно работает, потому что plt определяется в строке 2. Если вы просто запускаете строку 6 без строки 2, у вас есть проблемы.

Также похоже, что вы установили точку останова на строке 6, что является другим вопросом полностью...

Ответ 3

  • Сначала убедитесь, что вы правильно закрыли (а не просто скрыли) консоль, нажав кнопку закрытия консоли слева, что является красным X (см. эту страницу).
  • Теперь (повторно) откройте консоль и щелкните значок "Прикрепить отладчик", значок зеленого знака второй снизу слева (чуть выше зеленого плюса). Это должно стать толчком и серым.
  • Теперь, если вы импортируете свои модули и запускаете в них функции внутри, любые точки останова, установленные в этих функциях, должны быть удалены, как обычно, и вы можете выполнять их через один шаг, точно так же, как при отладке script, Вы можете сделать это, набрав непосредственно в консоли или выбрав код и выбрав "выполнить в консоли", как описано в другом ответе. Кажется, что трассировка стека не работает (в моем быстром тесте). Например, если у вас есть функция "fn()" в файле "foo.py" в каталоге "dir", попробуйте следующее: import dir.foo dir.foo.fn()

  • Если вы измените свой код после его импорта, консоль Python все равно будет использовать старый код. (Если вы остановитесь на контрольных точках, это может стать очень запутанным.) Вы можете принудительно обновить новый код, вызвав функцию reload, как показано ниже. В качестве альтернативы вернитесь к шагу 1 (это хорошая идея, если все начнет растеряться). from importlib import reload # This line only needed on Python 3 reload(dir.foo)

Ответ 4

Хотя это не функция pycharm, я бы настоятельно предложил попробовать jupyter notebook. Это очень полезно для прототипирования.

Если вы хотите сделать это способом pycharm, как указал Dag Høidahl, одним из вариантов является выполнение блока кода в консоли с помощью Alt+Shift+E.

Однако, чтобы полностью использовать превосходный отладчик Pycharm, вы должны написать unit test вызов определенного фрагмента кода, который вы хотите протестировать (или отладить). Таким образом, вы можете добавить контрольные точки правильно отлаживать или автоматически обеспечить ожидаемое поведение в будущем. Тем не менее, тесты на модульные устройства имеют много других преимуществ, которые вы по достоинству оцените.

Ответ 5

Это не ответ на вопрос, но может быть полезным.

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