用 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,用完切回来即可。

相关推荐
IT_陈寒11 小时前
SpringBoot性能优化完全指南
前端·人工智能·后端
随性而行36011 小时前
企业微信 Webhook 接收不到消息?网络连通性、URL 签名验签与 API 返回错误码排查指南
java·网络·人工智能·后端·微信·企业微信
相隔一个图书馆的距离11 小时前
单测(三)Spring Boot 3.5.6 && @MockitoSpyBean / AOP / 循环依赖:静默吞错与运行期 NPE
java·spring boot·后端
凤山老林11 小时前
Spring Boot 集成 Apache CXF 发布与消费 SOAP WebService:WSDL、WS-Security
spring boot·后端·apache·webservice·soap·apache cxf
软件技术NINI11 小时前
基于JavaWeb 汽车租聘
java·vue.js·spring boot·后端·python·毕业设计·毕设
yz_aiks11 小时前
RestTemplate 废弃后迁移 RestClient 实战:Spring Boot 4.2 升级指南
java·spring boot·后端·微服务·restclient
金銀銅鐵21 小时前
[Java] 用 GUI 展示 EnumSet 增减元素时的内部变化(上)
java·后端·ai编程
念何架构之路21 小时前
go-grpc设计思想
开发语言·后端·golang
system_error_x1 天前
SpringBoot 集成 Thymeleaf 简洁入门
java·spring boot·后端
步行cgn1 天前
Spring MVC 视图机制的核心接口与类
java·开发语言·后端·spring·mvc