用 conda 固定默认环境 normal

先说目标

机器上同时有三套 Python 很容易搅在一起:

  1. 系统自带的 /usr/bin/python3
  2. conda 的 base
  3. 自己建的业务 / 学习环境

想要的结果很简单:不管终端还是 Cursor,一律只用名为 normal 的 conda 环境 ,不要再落到 base 或系统 Python 上。

下面以 miniforge(路径 /home/charlie/miniforge3)为例,过程对 Anaconda / Miniconda 同样适用,改一下前缀即可。

1. 创建 normal 环境

选用相对稳妥的 3.12:

ini 复制代码
conda create -n normal python=3.12 -y

创建完成后确认:

shell 复制代码
conda env list
# base                     /home/charlie/miniforge3
# normal                   /home/charlie/miniforge3/envs/normal

解释器路径固定为:

bash 复制代码
/home/charlie/miniforge3/envs/normal/bin/python

网络不稳时下载可能被 Connection reset by peer 打断,直接重跑同一条 conda create 即可,已下完的包会复用缓存。

2. 关掉 base 自动激活

默认安装后,新开 shell 会进 base。先关掉:

arduino 复制代码
conda config --set auto_activate_base false

新版 conda 会把这个键写成 auto_activate。~/.condarc 里最终可以是:

vbnet 复制代码
auto_activate: false

这样登录时不会再默认进 base。

3. 让 bash 登录后自动进 normal

在 ~/.bashrc 的 conda initialize 块末尾加上激活语句:

bash 复制代码
# >>> conda initialize >>>
__conda_setup="$('/home/charlie/miniforge3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
    eval "$__conda_setup"
else
    if [ -f "/home/charlie/miniforge3/etc/profile.d/conda.sh" ]; then
        . "/home/charlie/miniforge3/etc/profile.d/conda.sh"
    else
        export PATH="/home/charlie/miniforge3/bin:$PATH"
    fi
fi
unset __conda_setup
# Always use the `normal` env (never conda base / system Python)
conda activate normal 2>/dev/null
# <<< conda initialize <<<

要点:

  • 必须写在 conda hook 初始化之后 ,否则 conda activate 可能不可用
  • 2>/dev/null 避免环境尚未创建时刷一堆报错
  • 新开终端后提示符应显示 (normal)

已打开的旧终端不会自动生效,手动执行一次:

css 复制代码
conda activate normal

4. 让 Cursor 也指向 normal

只改 shell 不够,编辑器里跑 Python / 选解释器时仍可能跳到别的环境。在 Cursor 用户设置里加上:

json 复制代码
{
  "python.defaultInterpreterPath": "/home/charlie/miniforge3/envs/normal/bin/python",
  "python.terminal.activateEnvironment": true,
  "terminal.integrated.env.linux": {
    "CONDA_DEFAULT_ENV": "normal"
  }
}

路径按本机 conda 前缀调整。改完后重开集成终端,或在命令面板里重新选一次解释器确认。

5. 验收

干净登录测一下(或新开一个终端):

bash 复制代码
echo "$CONDA_DEFAULT_ENV"   # 期望:normal
which python                # .../envs/normal/bin/python
python --version            # Python 3.12.x
conda env list              # normal 前有 *

再确认没有误用系统解释器:

bash 复制代码
command -v python
command -v python3
# 两者都应落在 .../envs/normal/bin/ 下

系统里的 /usr/bin/python3 可以还在,但只要 PATH 里 normal 在前,日常敲 python / python3 就不会撞上它。

The End

项 做法
独立环境 conda create -n normal python=3.12
禁用 base auto_activate: false
终端默认 ~/.bashrc 里 conda activate normal
编辑器默认 Cursor python.defaultInterpreterPath 指向 normal

之后装包、写脚本、跑实验,默认都进 normal;需要隔离的项目再单独 conda create -n xxx,用完切回来即可。

相关推荐
特立独行的猫A3 小时前
用仓颉语言 cj-tauri 框架,五分钟给娃做了个鸿蒙形近字游戏
java·后端·python
码事漫谈6 小时前
我花了一周时间,看AI公司怎么"管"AI,结果越看越后背发凉
后端
爱学习的程序媛8 小时前
Python常用框架梳理
开发语言·后端·python·ai·web·后端框架·python框架
GISer_Jing8 小时前
Agent核心内容
后端·ai·langchain
budingxiaomoli9 小时前
Spring统一功能处理
java·后端·spring
某鹏10 小时前
网关选型:Go、Java、Graal 谁都不能完胜
后端
用户02478365309711 小时前
从屎山到防线:14 行状态迁移表,给任务系统装上防瞎跳闸门
后端
CQU_JIAKE11 小时前
11.13[体系结构】指标,五级流水线,八级流水线,虚实地址思考
后端
panbook13 小时前
从0到1实现一个分布式时序数据库(三):主从复制、故障检测与切换
后端
上线再说13 小时前
图片从 8.2MB 压到 296KB:我把小程序图片链路的账单拆了一遍
后端