Не удалось запустить отладчик python visual studio
Перед установкой Visual Studio 2017 все мои файлы python были успешно запущены с использованием py (или py3) в PowerShell, Git Bash и Cygwin Terminal, но не CMD.exe или MSYS:
Этот исполняемый файл был установлен непосредственно установщиком Python 3.7, и я настроил для него переменные пути.
После установки VS 2017 Microsoft вставила путь к их специфичной для VS копии py.exe C:\Windows\py.exe в системную переменную PATH . Эта копия python ничего не делает при прямом запуске и не отвечает на команду exit() , чтобы прекратить поток, а сценарии ничего не делают, когда передаются в него. Буквально ничего не работает, даже print() заявления.
В Visual Studio после открытия окна «Solution Explorer» и щелчка правой кнопкой мыши на script.py и нажатия Start without Debugging ничего не происходит.
Если я нажимаю Start with Debugging , то он переключает представление в режим отладки и «запускает» программу (отображаются кнопки паузы и остановки), но окно выполнения не отображается. Панель «Вывод» автоматически выбирает «Отладка», и выходных данных там нет. Панели "autos" и "localals" не заполнены, что указывает на то, что на самом деле ничего не работает.
Я не хочу обходной путь. Я знаю, что могу удалить эту запись из PATH, но официальная установка Python может быть несовместима с VS 2017 или может отсутствовать интеграция. Я хочу знать, почему копия Microsoft py.exe вообще не работает, и каково их официальное решение этой проблемы.
2 ответа
Это не совсем правильный ответ, потому что я не уверен в том, как это связано с проблемой, с которой вы сталкиваетесь в Visual Studio 2017 и PowerShell, - но поскольку вы попросили меня опубликовать его, как если бы он был один, я делаю так.
Microsoft не установила исполняемый файл C:\Windows\py.exe , установщик Python сделал.
См. Следующую информацию об использовании Python в Windows в Python документация. Также см. Репозиторий управления версиями Винея Саджипа (автор) для проекта pylauncher, где он возник.
Как я уже говорил в предисловии, я не уверен, как все это относится к вашей проблеме, но чувствую, что понимание того, как все обычно работает, может помочь вам решить проблему.
Надеюсь, вы нашли это проницательным .
Visual Studio 2017 использует PowerShell в качестве оболочки / среды выполнения.
Проблема связана с тем, что в PowerShell возникла проблема со свойствами среды исполнения Cygwin, включая виртуальный путь.
Проблема случайно ушла. В одну секунду PowerShell сообщает о своем рабочем каталоге как /cygdrive/c/folder/to/working/directory и действует точно так же, как Cygwin Terminal. В следующий раз, когда я запустил PowerShell, он функционировал правильно, возвращая такой вывод pwd :
Эта проблема представляет собой сочетание двух проблем. Первый связан с тем, что py.exe не распознает Cygwin как интерактивную оболочку, как описано в этом ответе.
Второй связан с тем, что PowerShell принимает среду выполнения Cygwin. Не уверен, как это происходит, или почему это внезапно перестало происходить.
Visual Studio предоставляет возможности для управления проектами, расширенные возможности редактирования, окно Интерактивный режим и инструменты полнофункциональной отладки для кода Python. В отладчике можно выполнять код пошагово, включая каждую итерацию цикла. Кроме того, можно приостанавливать программу, если выполняются определенные условия. При приостановке программы в отладчике можно полностью изучить ее состояние и изменить значения переменных. Эти действия необходимы для выявления источников ошибок в программе. Кроме того, они позволяют отслеживать поток работы программы.
Замените код в файле PythonApplication1.py приведенным ниже кодом. Этот вариант кода расширяет make_dot_string , что позволяет изучать отдельные шаги в отладчике. Он также помещает цикл for в функцию main и выполняет его явным образом, вызывая эту функцию.
Убедитесь, что код работает правильно, нажав клавишу F5 или выбрав команду меню Отладка > Начать отладку. Эта команда запускает код в отладчике. На сегодняшний день пока еще ничего не сделано для приостановки запущенной программы; просто выполняется печать шаблона волн для ряда итераций. Нажмите любую клавишу, чтобы закрыть окно вывода.
Чтобы закрыть окно вывода автоматически после завершения программы, выберите команду меню Сервис > Параметры, разверните узел Python, выберите Отладка и снимите флажок Ожидать входные данные при нормальном завершении работы процесса:
Дополнительные сведения об отладке и инструкции по настройке аргументов сценария и интерпретатора, см. в разделе Отладка кода Python.
Установите точку останова в операторе for , щелкнув один раз серое поле возле этой строки или поместив курсор в этой строке и выбрав команду Отладка > Точка останова (клавиша F9). В сером поле появляется красная точка для указания точки останова (как показано ниже стрелкой):
Снова запустите отладчик (F5), и вы увидите, что выполнение кода остановится в строке с этой точкой останова. Здесь можно просмотреть стек вызовов и переменные. Переменные, относящиеся к области действия, приводятся в окне Видимые, если они определены. В нижней части этого окна можно также перейти к представлению Локальные.В нем отображаются все переменные, которые найдены средой Visual Studio в текущей области действия (включая функции), даже если они еще не определены.
Обратите внимание на панель инструментов отладки (показана ниже) в верхней части окна Visual Studio. Эта панель инструментов предоставляет быстрый доступ к наиболее часто используемым командам отладки (которые также находятся в меню Отладка).
Кнопки располагаются слева направо в следующем порядке:
Выполните применительно к оператору for шаг с обходом с помощью команды Шаг с обходом. Пошаговое выполнение означает, что отладчик выполняет текущую строку кода, включая все вызовы функций, после чего сразу приостанавливает выполнение программы. Обратите внимание на то, как в коде переменная i теперь определена в окнах Локальные и Видимые.
Выполните шаг с обходом в следующей строке, в которой вызывается функция make_dot_string . Шаг с обходом здесь нужен для того, чтобы отладчик выполнил всю функцию make_dot_string и приостановил работу, когда она завершится. Внутри функции работа отладчика не останавливается, если в ней нет отдельной точки останова.
Выполните еще несколько шагов с обходом, наблюдая за тем, как меняются значения переменных в окнах Локальные и Видимые.
В окне Локальные или Видимые в столбце Значение дважды щелкните поле переменной i или s , чтобы изменить ее значение. Чтобы применить изменение, нажмите клавишу Enter или щелкните в любой области за пределами поля со значением.
Продолжите пошаговое выполнение кода с помощью команды Шаг с заходом. Шаг с заходом означает, что отладчик заходит во все вызываемые функции, о которых у него есть отладочные сведения, например make_dot_string . Внутри функции make_dot_string вы можете изучать ее локальные переменные и пошагово выполнять ее код.
Продолжайте пошагово выполнять код с помощью команды Шаг с заходом и обратите внимание на то, что после достижения конца функции make_dot_string вы возвращаетесь в цикл for , а переменная s принимает новое значение. Когда вы снова перейдете к оператору print , обратите внимание на то, что выполнение шага с заходом для print не приводит к заходу в эту функцию. Связано это с тем, что функция print не написана на языке Python, а представляет собой машинный код внутри среды выполнения Python.
Продолжайте выполнять шаги с заходом, пока вы снова не попадете в функцию make_dot_string . Теперь используйте команду Шаг с выходом и обратите внимание на то, что вы вернетесь в цикл for . Команда Шаг с выходом означает, что отладчик выполняет функцию до конца, а затем автоматически приостанавливает выполнение в вызывающем коде. Эту команду рекомендуется использовать, если вы уже обработали какую-то часть длинной функции, которая требует отладки. Она обработает остальную часть и не будет настраивать явную точку останова в вызывающем коде.
Чтобы продолжить выполнение программы после достижения очередной точки останова, используйте команду Продолжить (F5). Так как вы установили точку останова в цикле for , при следующей итерации произойдет остановка.
Пошаговое выполнение сотен итераций цикла может быть утомительным, поэтому в Visual Studio к точке останова можно добавить условие. В этом случае отладчик будет приостанавливать выполнение программы в точке останова, только если условие соблюдается. Например, можно настроить условие для точки останова в операторе for так, чтобы выполнение в ней прерывалось, только если значение переменной i превышает 1600. Чтобы задать это условие, щелкните правой кнопкой мыши красную точку, обозначающую точку останова, и выберите пункт Условия (сочетание клавиш Alt+F9 > C). В появившемся всплывающем окне Параметры точки останова введите i > 1600 в качестве выражения и выберите Закрыть. Нажмите клавишу F5, чтобы продолжить работу, и обратите внимание на то, что до того, как произойдет следующий останов, будет выполнено несколько итераций.
Чтобы программа выполнялась до конца, отключите точку останова, щелкнув в поле точку правой кнопкой мыши и выбрав команду Выключить точку останова (CTRL+F9). Затем выберите команду Продолжить (или нажмите клавишу F5), чтобы запустить программу. Когда выполнение программы завершится, сеанс отладки в Visual Studio будет закрыт и вы вернетесь в режим редактирования. Можно также удалить точку останова, выбрав его точку или щелкнув правой кнопкой мыши точку и выбрав Удалить точку останова. При этом также удаляются все ранее заданные условия.
Всем привет. Была тихая январская ночь, когда понадобилось установить версию Python 3.7.2(x64)(на диск E:\) на рабочее место, где уже была версия Python 3.6.4(x86) (на диске C:\). Т. е. установка новой версии 3.7.2(x64) проводилась в другой диск и папку на ПК.
Использую: ОС: Windows 7 Professional (x64) Visual Studio Code - далее VSC - (на текущий момент последняя в этой вселенной версия: 1.30.2). Полные данные:
После установки VSC "подцепил" и новую версию 3.7.2(x64), в списке выбора интерпретаторов версия также появилась. Через: [путь_к_новой_версии]\pip.exe freeze -r [имя_файла_с_модулями] установил все модули, что были на 3.6.4(x86).
Решил, что раз VSC не может правильно определить версию интерпретатора, то "должен остаться только один Python". Удалил Python 3.6.4(x86), который был на диске C:\. В настройках рабочей области явно указывается, какую версию интерпретатора использовать:
И VSC теперь определяет единственную оставшуюся на ПК версию:
Но появилась другая проблема: VSC теперь вообще не реагирует на запуск любых сценариев. Даже простой print('Bye forever, world. ') не запускается. После запуска (первое нажатие F5) даже не определяются основные переменные, после второго нажатия F5 - ничего.
Суть в коротком видеоролике: VSC и Python не дружат.
Поиск на англоязычных форумах внятного ответа также не дал. Просьба указать направление, куда копать ) Заранее большое спасибо за поддержку!
Примечание: Возможно, это поможет: на домашнем ПК установлена версия Python 3.7.2(x64), которая до вчерашнего вечера благополучно работала. Но потом точно также перестала запускать даже простейшие сценарии.
Важное примечание: Выяснил, что режим запуска сценария в VSC "Начать без отладки" (Ctrl + F5) прекрасно работает. Таким образом, проблема именно в запуске сценариев с отладкой через F5. Краткое видеодоказательство: "Начать без отладки" - работает
Поскольку я обновил код VS, похоже, что мой отладчик сломался. Некоторое время я получал, что процесс адаптера отладки неожиданно завершился из-за ошибки. Даже не могу вспомнить, как я это пережил.
Теперь я получаю эту ошибку при попытке отладки скрипта python с помощью pyqt. Все это работало несколько месяцев назад.
Это результат вывода на терминал, когда я нажимаю "запустить" в меню отладки на vs code.
Кроме того, мои точки останова не работают, если я не помещаю задержку в 1-ю строку каждого скрипта, отладчику требуется почти минута, чтобы добраться до первой строки . Раньше это было так гладко. Что случилось!?
Было время, когда я мог загружать и отлаживать код, устанавливать расширение и писать и отлаживать скрипты за считанные минуты. Пора уже спрыгнуть с корабля?
В этой статье мы расскажем о хитростях и советах по Python, которые должны быть известны разработчику Python.
В одном из недавних постов я рассказал о том, как я использую навыки количественных исследований, которые я совершенствую в рамках программы TPQ.
Вы когда-нибудь хотели поделиться с кем-то файлом, но он содержал конфиденциальную информацию? Многие думают, что электронная почта безопасна, но это.
Недавно я столкнулся с интересной бизнес-задачей - визуализацией сбоев в цепочке поставок лекарств, которую могут просматривать врачи и.
Ответы 1
Я столкнулся с тем же самым, что было исправлено путем добавления C: \ Windows \ System32 в переменную пути в переменных среды (то же место, где мы добавляем путь для python).
Отметьте как полезное, если поможет.
Это устранило ошибку. Я пометил как полезный, но он не будет публично отображаться . Есть идеи, почему он такой медленный и не останавливается в точках останова, если я не поставлю задержку перед точкой останова? Или почему серьезно иногда требуется почти 30 секунд, чтобы запустить отладчик, и 10 секунд, чтобы перешагнуть через что-нибудь? Заметил это на 2-х машинах в работе :(
Это может быть сложно. Это может быть связано с VS Code, вашим кодом Python или машиной, на которой работает VS Code. Я уверен, что вы, должно быть, пытались переустановить плагин VS Code и Python. Во время отладки вся программа перестает отвечать, когда вы сталкиваетесь с задержкой? Что вы видите в стеке вызовов / часах, когда отладка не отвечает, что-то необычное? В своем коде вы используете какие-то глобально объявленные, которые, возможно, должны получить какой-то токен / аутентификацию через Интернет или что-то в этом роде (слишком далеко, но я столкнулся с чем-то похожим).
Я проверю кое-что из этого завтра, когда буду там. Спасибо за всю твою помощь!
Я запускаю свой профиль проекта вместо того, чтобы запускать его в профиле IIS Express. Вот мой файл launchSettings.json .
И когда я проверяю окно вывода, я получаю вот что.
Программа «[22052] .exe» завершилась с кодом -1 (0xffffffff).
Еще я заметил, что новая вкладка браузера открывается без какого-либо URL-адреса, а только страница about:blank .
У меня тоже такая же проблема, когда он работал нормально целую вечность. Вдруг после обновления Edge перестал работать; У меня нет окна консоли и нет открытого окна браузера. Единственное решение - перейти на Chrome. Что странно, это то, что он работает первый раз после перезагрузки, а потом уже второй раз сломался.
4 ответа
Проблема заключалась в том, что процесс, начатый моим предыдущим выполнением, все еще работал. Когда мы запускаем проект с использованием проекта профиля, он запускает новый процесс, и вы можете видеть, что есть новый Debug console window , как на предыдущем изображении.
Вы можете просто закрыть это окно и снова запустить свой проект, и это решит проблемы. Вы также можете включить параметр, который закроет этот процесс при остановке отладки. Для этого перейдите в Инструменты, затем нажмите «Параметры», выберите «Отладка» и затем включите параметр Automatically close the console when debugging stops .
Если вы не видите этот параметр, просто щелкните другие параметры в меню «Отладка» и дождитесь загрузки содержимого, а затем снова щелкните меню «Отладка». Иногда просто показывался пустой экран без каких-либо опций. Похоже на ошибку в Visual Studio 2019 .
Также не забудьте закрыть окно браузера, которое было открыто после последнего выполнения. Для меня он был открыт, поэтому открывалась новая вкладка с about: blank .
К сожалению, это не помогло мне. Пробовал как с VS 2019, так и с VS 2020 Preview 2.1, все работало нормально, и время от времени проблема начиналась. VS запускает пустое окно браузера и не может определить, на каком порту работает IIS. Таким образом, он пытается подключить отладчик к неправильному порту и получает отказ в соединении. Если я вручную перейду в том же окне браузера на страницу IIS Express, я могу загрузить ее, но отладка по-прежнему не работает.
Мне нужно либо отключить отладчик Javascript, либо использовать Internet Explorer для запуска приложения.
У нас возникла та же проблема, что и для zBestData выше, после перехода на Visual Studio 2019 версии 16.9.1.
На данный момент у нас не так много времени, чтобы разобраться в этом, но, похоже, это связано с процессами msedge.exe, которые остались запущенными после сеанса отладки. В качестве обходного пути перед запуском второго сеанса отладки закройте все открытые окна Edge, затем уничтожьте все экземпляры msedge.exe (например, в диспетчере задач).
В противном случае мы обнаружим, что необходимо перезапустить систему, чтобы устранить ошибку.
То же самое у меня после обновления до 16.9.3. Перезагрузка Исправлено. (Я не пробовал просто закрыть Visual Studio и перезапустить ее в одиночку. Это тоже может сработать.)
Проблема, скорее всего, связана с вашим браузером, который в этом случае действует как адаптер отладки. Закройте все экземпляры вашего браузера.
Объяснение:
Откройте файл visualstudio-js-debugger.txt . Он должен находиться в месте, аналогичном указанному ниже.
Не забудьте заменить your-user-name в приведенном ниже пути на свое правильное имя пользователя.
Файл должен выглядеть, как показано ниже. Обратите внимание на идентификатор адаптера, выделенный красным, это браузер Chrome . Поэтому в этом случае вы можете просто закрыть все экземпляры браузера Chrome .
Читайте также: