Почему VSCode не активирует conda перед запуском отладчика? - PullRequest
0 голосов
/ 06 июня 2019

Когда я запускаю отладчик в VSCode, среда conda активируется только после остановки процесса отладки с ошибкой импорта «Отсутствуют требуемые зависимости». Сразу перезапуск отладчика работает нормально тогда.

Эта проблема возникает с «базой» Anaconda и другими средами.

Тестовый код: import_pandas.py

    import pandas
    print("Pandas import succeeded!")

Консоль отладки VSCode Python:

Microsoft Windows [Version 10.0.16299.1146]
(c) 2017 Microsoft Corporation. All rights reserved.

C:\Users\peter\demo>cd c:\Users\peter\demo && 
    cmd /C "set "PYTHONIOENCODING=UTF-8" && 
    set "PYTHONUNBUFFERED=1" && 
    C:\Users\peter\AppData\Local\Anaconda3\python.exe 
        c:/Users/peter/.vscode/extensions/ms-python.python-2019.5.18678/pythonFiles/ptvsd_launcher.py 
            --default --client --host localhost --port 49530 
c:\Users\peter\demo\import_pandas.py "

...

ImportError: Missing required dependencies ['numpy']

C:\Users\peter\demo>C:/Users/peter/AppData/Local/Anaconda3/Scripts/activate

(base) C:\Users\peter\demo>conda activate base

(base) C:\Users\peter\demo>

Обратите внимание, что conda автоматически активируется после остановки отладчика.

После активации среды процесс отладки больше не завершается:

(base) C:\Users\peter\demo>cd c:\Users\peter\demo && 
    cmd /C "set "PYTHONIOENCODING=UTF-8" && 
    set "PYTHONUNBUFFERED=1" && 
    C:\Users\peter\AppData\Local\Anaconda3\python.exe 
        c:/Users/peter/.vscode/extensions/ms-python.python-2019.5.18678/pythonFiles/ptvsd_launcher.py 
        --default --client --host localhost --port 49544 
c:\Users\peter\demo\import_pandas.py "

Pandas import succeeded!

Есть ли способ активировать conda перед первым вызовом отладчика?

Ответы [ 2 ]

0 голосов
/ 20 июня 2019

Это похоже на мою проблему с отладкой Python.Мой скрипт на python нормально работает в базовой среде conda.Но как только я запускаю отладчик с использованием расширения Python, я сразу начинаю видеть ошибки DLL импорта в консоли отладки, но отладчик не останавливается на этой ошибке.Он просто закрывает отладчик через 3 секунды или около того, не выполняя сценарий.Я даже могу установить точки останова позже в скрипте, и он не останавливается после этой строки.Перезапуск отладчика делает то же самое, в отличие от исходного описания.Я попытался удалить, а затем переустановить расширение MS Python безрезультатно.Любые подсказки, которые вы можете предложить, были бы хороши, я не профессионал против кода.Спасибо.

Обновление: отладчик работает нормально.Я создал виртуальную среду Windows 10 Python, размещенную в рабочей области моего проекта.По-видимому, это работает при задержке активации conda env, описанной ниже, по-видимому, это не относится к виртуальной среде Windows.

0 голосов
/ 06 июня 2019

Дело не в том, что отладчик активирует среды conda после того, как отладчик нарочно останавливается, а в том, что активация conda настолько медленная, что она не заканчивается до после , сам отладчик не завершает работу (это не проблема с виртуальными средами, так как они не нуждаются в активации для правильного поведения). По сути, мы просим VS Code запустить терминал с командами активации, а затем запустить отладчик, но отладчик может работать быстрее, чем активация conda, и поэтому он не выполняется до окончания отладчика.

Работать с Кондой просто сложно. Вы можете следить за нашей мета-проблемой , которая отслеживает все проблемы, которые мы пытаемся решить с командой conda.

...