2025, Oct 18 05:15
Почему кнопка Run в VS Code запускает conda run и как это исправить
Кнопка Run в VS Code запускает conda run вместо python.exe? Разбираем причину (Python Environments), показываем, как вернуть прямой запуск из виртуальной среды.
Когда кнопка Run в VS Code начинает запускать Python через conda run вместо интерпретатора из вашего виртуального окружения, это ломает привычные процессы и в некоторых оболочках вовсе приводит к сбоям. Ожидаемое поведение — прямой вызов python.exe из выбранной среды, но кнопка внезапно прокладывает маршрут через conda, что непригодно, если терминальная сессия не инициализирована для Conda или Miniforge.
Пример неожиданной команды
Нажатие на кнопку воспроизведения в итоге запускает обёртку conda, а не сам интерпретатор по пути среды. В PowerShell, не инициализированном для Conda, это может привести к такому выводу:
(base) PS C:\Users\dev\Desktop\proj> & conda run --live-stream --name envBase python C:/Users/dev/Desktop/proj/app.py
usage: conda-script.py [-h] [-v] [--no-plugins] [-V] COMMAND ...
conda-script.py: error: argument COMMAND: invalid choice: '' (choose from activate, clean, commands, compare, config, create, deactivate, env, export, info, init, install, list, notices, package, doctor, repoquery, remove, uninstall, rename, run, search, update, upgrade)
Желаемое поведение — прямой вызов интерпретатора из выбранной среды, то есть запуск скрипта по пути к python.exe этой среды, без обхода через conda run.
Что на самом деле происходит
Путаница возникает из-за предположения, что кнопка запуска управляется расширением Code Runner. На самом деле действие Run Python File относится к Python-расширению VS Code, а не к Code Runner. Поэтому правки настроек Code Runner, например executorMap, на Run Python File не влияют. Такое поведение, включая переадресацию через conda run, уже описано и обсуждается в трекере проблем Python‑расширения, где ясно указано, откуда оно берётся.
Для контекста см. следующие отчёты в репозитории Python-расширения: https://github.com/microsoft/vscode-python/issues/18634 и https://github.com/microsoft/vscode-python/issues/25335#issuecomment-3134925306.
Исправление, возвращающее прямой запуск Python
Рабочий обходной путь — отключить расширение Python Environments. После этого кнопка Run перестаёт принудительно прогонять запуск через conda run. При необходимости перезапустите VS Code, чтобы изменения вступили в силу. В результате запуск снова соответствует ожиданию: интерпретатор вызывается напрямую из выбранного виртуального окружения.
До и после на уровне команд
Проблемная команда, отправленная через Conda:
& conda run --live-stream --name envBase python C:/Users/dev/Desktop/proj/app.py
Желаемый прямой вызов интерпретатора из активной среды:
C:\path\to\current-env\python.exe C:\Users\dev\Desktop\proj\app.py
Почему это важно в ежедневной работе
Понимание того, какой компонент VS Code отвечает за кнопку Run, избавляет от поисков «не тех» настроек. Если ваш терминал не является оболочкой, инициализированной для Conda, conda run будет падать, даже если с окружением и кодом всё в порядке. Отключение Python Environments возвращает кнопке запуска простой сценарий выполнения и помогает избежать проблем, зависящих от конкретной оболочки, в связке с Conda или Miniforge.
Итоги
Если кнопка запуска в VS Code начинает вызывать conda run и ломает ваш процесс работы, не настраивайте Code Runner — меняйте то, что нужно. Действие Run Python File принадлежит Python‑расширению, и отключение расширения Python Environments возвращает прямой запуск python.exe из выбранной среды. Если вам удобна маршрутизация через Conda, продолжайте работать в терминале, инициализированном для Conda; в противном случае отключение этого расширения вернёт простой и предсказуемый путь запуска.
Статья основана на вопросе на StackOverflow от Zhang Xuan и ответе от Zhang Xuan.