VSCode中激活Conda环境后which python与sys.path输出不一致
问题描述
在VSCode中激活Conda环境My_env并选择对应解释器后:
- 启动Python时,
sys.path和sys.version均指向该环境的解释器 - 但在终端执行
which python或python --version却指向base环境的默认Python版本 - 在VSCode外执行相同操作时,
which python与sys.path输出一致 - 无论是否在VSCode中,激活任意环境后
conda info都显示base环境的Python版本
已尝试但无效的操作:
- 关闭base环境自动激活
- 执行
hash -r
环境信息
VSCode
- Version: 1.91.1
- Commit: f1e16e1e6214d7c44d078b1f0607b2388f29d729
- Date: 2024-07-09T22:08:12.169Z
- Electron: 29.4.0
- ElectronBuildId: 9728852
- Chromium: 122.0.6261.156
- Node.js: 20.9.0
- V8: 12.2.281.27-electron.0
- OS: Linux x64 6.5.0-41-generic snap
conda info 输出
active environment : My_env active env location : /home/name/anaconda3/envs/My_env shell level : 1 user config file : /home/name/.condarc populated config files : /home/name/.condarc conda version : 24.1.2 conda-build version : 24.1.2 python version : 3.11.7.final.0 solver : libmamba (default) virtual packages : __archspec=1=skylake __conda=24.1.2=0 __glibc=2.35=0 __linux=6.5.0=0 __unix=0=0 base environment : /home/name/anaconda3 (writable) conda av data dir : /home/name/anaconda3/etc/conda conda av metadata url : None channel URLs : https://repo.anaconda.com/pkgs/main/linux-64 https://repo.anaconda.com/pkgs/main/noarch https://repo.anaconda.com/pkgs/r/linux-64 https://repo.anaconda.com/pkgs/r/noarch package cache : /home/name/anaconda3/pkgs /home/name/.conda/pkgs envs directories : /home/name/anaconda3/envs /home/name/.conda/envs platform : linux-64 user-agent : conda/24.1.2 requests/2.31.0 CPython/3.11.7 Linux/6.5.0-41-generic ubuntu/22.04.4 glibc/2.35 solver/libmamba conda-libmamba-solver/24.1.0 libmambapy/1.5.6 aau/0.4.3 c/o84sDdTYbleS3dVd3NF1Aw s/kgiszGL1njuqJYlZjLUa-w e/JXereckVRhPg5ZEODdeeVw UID:GID : 1001:1001 netrc file : None offline mode : False
操作系统
Ubuntu 22.04 LTS,64位
解决方案
1. 检查VSCode终端的shell配置
VSCode终端可能未正确加载conda初始化脚本:
- 打开VSCode设置,搜索
terminal.integrated.defaultProfile.linux,确保选择日常使用的shell(如bash/zsh) - 检查对应shell的配置文件(
.bashrc/.zshrc)是否包含conda初始化代码,若没有则执行conda init bash(替换为你的shell),之后重启VSCode
2. 关闭VSCode终端继承系统环境变量
打开VSCode设置,搜索terminal.integrated.inheritEnv,将其设为false,避免系统环境变量覆盖conda激活后的路径
3. 配置终端启动时自动激活目标环境
在VSCode的settings.json中添加以下配置(替换为你的shell和环境名):
"terminal.integrated.profiles.linux": { "bash": { "path": "bash", "args": ["-c", "conda activate My_env && exec bash"] } }
添加后重启VSCode
4. 确认conda自动激活base的设置已关闭
执行命令检查:
conda config --show auto_activate_base
若输出为true,执行以下命令关闭:
conda config --set auto_activate_base false
之后重启所有终端和VSCode
5. 清除VSCode Python扩展缓存
打开命令面板(Ctrl+Shift+P),依次执行:
Python: Clear Workspace Interpreter CachePython: Clear All Interpreter Caches
之后重新选择目标环境的解释器
内容的提问来源于stack exchange,提问作者Ludwich
相关产品推荐
相关产品推荐

