Я настроил venv с помощью python -m venv venv
, который распознается vscode как допустимый интерпретатор и выполняет мой код, как и ожидалось, с использованием расширения vscode code-runner. Но интегрированный в bs терминал vscode использует только системную версию python, даже после запуска source /Fake/path/to/env/bin/activate
. Терминал показывает (env)
в приглашении ввода, но проверка версии через os.path.dirname(sys.executable)
показывает, что версия python является той, которая указана в моем системном пути, а не той, что в venv. Поэтому устанавливаемые мной пакеты устанавливаются в системный python, а не в venv.
Это проблема с терминалом в vscode, а не с самим venv, так как, когда я выполняю вышеуказанные шаги в собственном терминале (не интегрированном), я получаю правильный путь к питону venv.
Я попытался установить для переменной python.venvPath
в vscode значение ${workspaceFolder}/env
или fake/path/to/env
, но ни одна из них не работает. Я думал, что можно установить аргументы оболочки bash в параметре terminal.integrated.shellArgs.macos
, но не смог понять, как заставить его запускать правильный скрипт активации при запуске. Для справки, мои текущие настройки vscode приведены ниже:
"settings": {
"code-runner.fileDirectoryAsCwd": true;
"code-runner.executorMap": {
"python": "env/bin/python3",
},
"python.venvPath": "${workspaceFolder}/env",
"terminal.integrated.cwd": "${workspaceFolder}",
},
}
По сути, я ожидаю, что встроенный терминал активирует сценарий Bash Activate Bash и временно заменит путь, чтобы выбрать мой Venv Python по умолчанию. Тогда я мог бы использовать pip3 для установки соответствующих пакетов в venv, а не в системный питон. Но, несмотря на подсказку, отображающую (env)
перед записью, реальное поведение состоит в том, что он указывает на неправильную версию Python при выдаче команд, например python3
или pip3
.
Любой совет был бы великолепен!