其实最早我接触 conda 的时候,是被 Anaconda 那接近 3GB 的安装体积给吓退的。后来换了 Ubuntu 作为主力开发系统,才认真去了解 Miniconda 这个轻量替代方案,结果一发不可收拾,包括现在写 Python 相关的项目、管理深度学习环境、处理数据工程任务,我几乎都依赖这套工具链。正因为亲身踩过不少坑,也帮同事排过不少雷,所以这篇文章我打算把 Ubuntu 上安装与卸载 Miniconda 的完整流程、原理、细节和疑难杂症一次讲清楚。无论你之前是纯 Windows 用户还是刚接触 Linux,这篇文章都能让你少走很多弯路。
Miniconda 可以理解成一个精装版的环境管理器,它只包含 conda 包管理器、Python 以及少量必要的依赖,没有 Anaconda 里那堆预装的数据科学库。你可能会问,那为什么不用 Anaconda?很简单,大多数场景下你根本用不到 Anaconda 预装的几百个包,自己需要的库用 conda install 或 pip install 装就行了。这样既省磁盘空间,又能避免很多依赖冲突。目前我的开发机上有多个 Python 版本和虚拟环境,底层靠的就是 Miniconda。
1. 安装前的准备:先搞清楚几件关键的事
1.1 Miniconda 和 Anaconda 到底怎么选
很多新手第一个问题就是:我到底该装 Anaconda 还是 Miniconda?我个人的建议很简单:除非你只是想快速搭一个能跑的数据科学环境、完全不想为环境配置花时间,否则选 Miniconda。
Anaconda 的好处是开箱即用,预装了 NumPy、Pandas、Matplotlib、Jupyter 等,占了 3GB 左右的磁盘空间。但问题也随之而来:预装的包版本往往不是最新的,而且很多你根本不会用到。Miniconda 默认只有 conda、Python 和 pip 等基础工具,体积大概才 400MB 出头,真正的需求由你自己决定装什么。换句话说,Anaconda 像是一个“全家桶”,Miniconda 像一个“基本款”,两者的底层管理机制完全一样,区别只在于预装内容。
另外还有一点,就是在服务器或 Docker 镜像里部署应用时,Miniconda 体积极小,拉取和安装都快得多,这也是业内更倾向于 Miniconda 的原因之一。
1.2 下载安装包时看清这几点
Miniconda 的官方下载地址是https://docs.conda.io/en/latest/miniconda.html,页面上会提供各种系统的安装包。但 Ubuntu 下下载容易踩坑,主要问题集中在以下几个方面。
首先是架构问题。大部分个人电脑是 x86_64 架构,那就下载Miniconda3-latest-Linux-x86_64.sh。如果你用的是树莓派或者 ARM 架构的服务器,就需要选择对应的Linux-aarch64版本,这个细节很容易被忽略,下载后直接跑就会报 “Exec format error”。
其次是下载方式。如果你和我一样在服务器上操作,建议直接在终端里用 wget 或 curl 下载,而不是先下载到本地再如何传输过去。在 x86_64 架构的 Ubuntu 机器上,我常用这样的命令:
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh这里特别提醒一下,别用sudo来下载或执行安装脚本。Miniconda 默认安装到当前用户的 home 目录下,不需要 root 权限。用 sudo 装反而可能搞乱文件归属,之后用起来会出现各种权限错误,这是我帮别人处理问题时见过最多的情况之一。
1.3 安装前检查现有 Python 环境
如果你之前已经用 apt 安装过 Python,或者系统自带 Python 3,不冲突。Miniconda 默认会用 conda 管理的 Python 环境,并在 shell 初始化时把 conda 的 bin 目录加到 PATH 中,优先级高于系统 Python。如果你之前装过 Anaconda,那就必须先彻底卸载 Anaconda 再装 Miniconda,否则两个 conda 的配置混在一起,会出现“conda 命令指向 Anaconda 但环境却来自 Miniconda”的诡异局面,排查起来非常痛苦。
你可以在终端执行which python和python --version看看当前 Python 来源。如果是/usr/bin/python,说明是系统自带的 Python,没关系。如果是/home/你的用户名/anaconda3/bin/python,就说明之前装过 Anaconda,得先清理。
2. 完整安装流程:从脚本运行到环境验证
2.1 运行安装脚本前的一个关键动作
下载完.sh安装文件后,先不要急着一把梭。我习惯先用sha256sum校验一下文件完整性,防止下载过程中文件损坏。Miniconda 官方页面每个安装包旁边都有对应的 SHA256 哈希值,对比一下就知道文件是否完整。
sha256sum Miniconda3-latest-Linux-x86_64.sh把这个命令输出的哈希值和官网显示的做对比,一致再继续。这一步虽然多花一分钟,但能避免安装到一半报 “archive file not found” 之类的诡异错误。
然后给安装脚本增加执行权限:
chmod +x Miniconda3-latest-Linux-x86_64.sh当然,你也可以直接用bash Miniconda3-latest-Linux-x86_64.sh来执行,不额外设置执行权限也没问题。我之所以习惯 chmod,是因为这样后续操作更符合直观预期。
2.2 安装交互式选项逐个拆解
执行安装脚本后会进入交互式流程。跑一下:
bash Miniconda3-latest-Linux-x86_64.sh首先是许可协议,会让你按回车翻页查看协议内容,然后输入yes表示同意。这里有个小技巧:如果不想一页页翻,可以直接按q跳过协议文本的阅读,再输入yes。接着脚本会询问安装路径,默认是~/miniconda3,也就是当前用户主目录下的 miniconda3 文件夹。直接回车用默认路径是最省心的。
然后是重点问题:Do you wish the installer to initialize Miniconda3 by running conda init?这里一定要选yes。如果选 no,安装完成之后 conda 命令不会自动生效,还得手动去配置环境变量,多麻烦一步。选 yes 后,脚本会自动往~/.bashrc里写入 conda 初始化相关的配置。
最后还有一个容易让人误会的提示:Do you wish to activate Miniconda3 by running conda init?不同版本的脚本表达略有差异,但核心就是问你是否立即激活 base 环境。按我的经验,直接选yes就行。安装结束后,关掉当前终端重新打开一个新终端,或者执行source ~/.bashrc,就能看到命令行前面出现(base)字样,这说明安装成功了。
2.3 三项验证确认环境可靠
安装完成后,不能只看出现(base)就觉得万事大吉,建议执行以下三条命令做完整验证:
conda --version which conda python --versionconda --version会输出版本号,比如conda 24.7.1。which conda显示路径,正常情况下应该是/home/你的用户名/miniconda3/bin/conda。如果显示的是/usr/bin/conda,说明系统正好存在其他版本的 conda,大概率是之前没卸载干净,后面我会重点讲这个问题。
python --version会显示 Miniconda 默认 Python 的版本。注意,如果你在安装前已经处于某个 conda 环境里,python指向的就是当前环境的解释器,这个要根据上下文判断。
我个人还会多跑一条命令,确认 conda 能正常找到默认环境:
conda info --envs输出会列出 base 环境的路径,这既验证了安装,也为后面频繁切换环境打好基础。
3. 安装后别急着用:先完成这两个基础配置
3.1 换源,否则下载包会让你怀疑人生
Miniconda 装好后第一件事,我建议设置镜像源。虽然官方源也远没有到“不可用”的程度,但国内网络环境下经常慢到你怀疑人生,尤其是大一点的包要下载半天。我们国内用户通常直接用清华或中科大的 Anaconda 镜像源。以清华源为例,在终端里执行:
conda config --set show_channel_urls yes conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config --set custom_channels.conda-forge https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud注意,conda config --add channels是把新 channel 加在最前,并设置优先级最高。顺序上一般把最常用的 main 和 free 放在前面,conda-forge 放到后面,这样默认优先从官方镜像主库下载,避免所有包都从 conda-forge 拉,时间会更可控。
配置完之后,建议用conda clean -i清除索引缓存,然后conda create -n test python=3.10建一个测试环境跑一下安装速度,满意就留下,不满意再微调。这个步骤请一定做,否则你后面每次装包都会来抱怨安装慢。
3.2 区分 conda 和 pip:选择合适的包管理方式
很多人装了 Miniconda 之后,还是会习惯性地只使用 pip。说实话,两者没有绝对的优劣,关键是在正确的场景用正确的工具。conda 的长处在于不仅能管理 Python 包,还能管理非 Python 的底层依赖,比如 CUDA 相关的库、科学计算库的 OpenBLAS、MKL 等,这些用 pip 装容易出麻烦。
但是 conda 的默认源上,某些包的版本更新速度确实比 PyPI 慢。所以我的经验是:
- 需要底层二进制依赖的库,比如
pytorch-cuda、numpy、scipy这种,优先用conda install,让 conda 帮忙解析依赖。 - 纯 Python 或更新频繁的库,比如
fastapi、streamlit、transformers,我直接用pip install,省得 conda 解析依赖等半天。
注意,如果要在指定 conda 环境里用 pip,优先执行/home/你的用户名/miniconda3/envs/环境名/bin/pip install 包名,避免装错环境。其实只要你激活了对应 conda 环境,直接用pip也是在当前环境里安装,但初学者如果没有激活就直接 pip,就很容易出现“明明 pip list 里有包,conda env 里 import 却报错”的问题。
4. 彻底卸载 Miniconda:比预期的坑更多
4.1 卸载前必须做的备份判断
无论是 Python 全环境升级、迁移到新版 Miniconda,还是彻底不用 conda 了,卸载前先明确一点:你当前环境里有没有自己写的代码、虚拟环境、模型文件等?如果有,先备份。很多人以为卸载 Miniconda 只是删掉一个文件夹,结果把所有虚拟环境里的库和项目代码一起带走了,追悔莫及。
我个人的做法是,在卸载前跑一遍conda env list,看看当前有哪些环境,确认每个环境里是否有需要保留的内容。需要导出的环境配置可以用下面的命令备份:
conda env export -n 环境名 > 环境名_backup.yml以后再装好 Miniconda 后,通过conda env create -f 环境名_backup.yml就能复原基本依赖结构。但请注意,这个备份只会记录通过 conda 安装的包,用 pip 装的包不一定完全在 yml 文件中,所以最好也跑一遍pip freeze > requirements.txt。
4.2 核心卸载步骤:别直接 rm -rf
网上很多文章直接让你执行rm -rf ~/miniconda3就完事,这是不负责的。删除文件夹只是第一步,shell 配置文件里的残留才是后续隐患。而且直接用rm -rf去删目录这种高风险操作,一个路径写错就可能把整个 home 目录推平,我是见过真实案例的。
先获取 Miniconda 的安装位置,防止误判:
which conda输出类似/home/你的用户名/miniconda3/bin/conda。这说明安装目录是/home/你的用户名/miniconda3。之后先退出所有 conda 环境:
conda deactivate然后删除 Miniconda 安装目录:
rm -rf /home/你的用户名/miniconda3这里再强调一次,路径不要写错。千万别写成rm -rf ~/minconda3或rm -rf ~/miniconda3/ /,一个空格就可能触发灾难。
4.3 清理 shell 配置文件残留
删除安装目录后,打开~/.bashrc:
nano ~/.bashrc或任意你喜欢的编辑器。找到类似下面这样的一大块配置,这是 conda init 自动写入的:
# >>> conda initialize >>> # !! Contents within this block are managed by 'conda init' !! __conda_setup="$('/home/你的用户名/miniconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)" if [ $? -eq 0 ]; then eval "$__conda_setup" else if [ -f "/home/你的用户名/miniconda3/etc/profile.d/conda.sh" ]; then . "/home/你的用户名/miniconda3/etc/profile.d/conda.sh" else export PATH="/home/你的用户名/miniconda3/bin:$PATH" fi fi unset __conda_setup # <<< conda initialize <<<注意,如果你的 shell 是 zsh,那可能写在~/.zshrc里。把从# >>> conda initialize >>>到# <<< conda initialize <<<之间所有内容全部删除并保存。
如果安装时选择的是旧版 Miniconda,配置可能不是这种块状格式,而是老式的export PATH="/home/你的用户名/miniconda3/bin:$PATH"一行。不管哪种形式,凡是指向 miniconda3 的 PATH 配置都应该删掉或注释掉,然后再执行:
source ~/.bashrc让当前 shell 重新加载配置,卸掉残留的环境变量。
4.4 清理隐藏目录和缓存,别留后患
Miniconda 除了安装目录,还在 home 目录下留下了~/.conda、~/.condarc等隐藏文件或目录。这些里面包含 conda 的配置信息、下载缓存、环境和包缓存,不删除也没有什么实际危害,但如果你是想“彻底清理干净”,建议一并处理:
rm -rf ~/.conda rm -rf ~/.condarc同时,Miniconda 有时候还会在~/.config/conda或~/.cache里留下痕迹,如果你追求极致的干净,也可以仔细查找。不过对我来说,~/.conda和~/.condarc清理掉就已经足够了。另外,如果你之前配置过 conda 自动激活 base 环境,卸载后发现每次打开终端都不再出现(base)提示,那说明环境变量已经清理干净了。
4.5 如何确认卸载干净了
卸载完不要直接关终端,先验证:
conda --version如果提示command not found,说明 conda 命令已经从 PATH 里消失了。再打开当前用户的.bashrc,搜索 “conda” 和 “miniconda3”,没有相关关键词,就基本干净了。当然也有极端情况是系统里还有其他用户装过 conda,或你自己在不同目录装过多个版本,导致conda还能被找到。这时可以用find / -name "conda" -type f 2>/dev/null全局查找,看看是否存在残留。
5. 安装和卸载过程中的高频问题和排查思路
5.1 安装时遇到 “Permission denied”
如果你在安装时没有用chmod +x添加执行权限,用./Miniconda3-latest-Linux-x86_64.sh方式执行,就会遇到权限报错。解决办法有两个:
- 用
bash Miniconda3-latest-Linux-x86_64.sh执行,不需要手动添加执行权限。 - 用
chmod +x Miniconda3-latest-Linux-x86_64.sh给脚本加权限后再执行。
还有一种情况是安装目录没有写权限。比如你用sudo bash Miniconda3-latest-Linux-x86_64.sh安装到了/root/miniconda3,那么普通用户想使用 conda 就非常不顺手。所以我前面的建议是:不要用 sudo 安装,直接装到用户目录下。
5.2 安装后 conda 命令找不到
这是最经典的问题。安装完成后,新开一个终端发现conda命令不存在。常见原因有几个。
第一个是安装脚本最后一步conda init你选了no,导致.bashrc里没有被写入 conda 初始化配置。解决方法有两种:一是重新执行一遍安装脚本(不用重新下载,跑一遍同样的命令,然后这次选 yes);二是手动写入初始化配置,直接执行eval "$(/home/你的用户名/miniconda3/bin/conda shell.bash hook)"临时激活,再运行conda init生成配置。第二种方法更优雅,也适合已经卸载又想临时用某个 conda 环境的情况。
第二个原因是 shell 配置文件不对。如果你用的不是 bash 而是 zsh,那么 conda init 写入的是~/.zshrc,而你又去查看~/.bashrc,自然觉得什么也没有。这种情况执行conda init zsh就行。
第三个原因有点隐蔽:有些用户的.bashrc里手动配置了 Python 的export PATH,把系统 Python 路径加在前面,可能盖住了 miniconda3 的路径。排查时在终端运行echo $PATH,看有没有包含/home/你的用户名/miniconda3/bin,没有的话就得手动在.bashrc中把 PATH 加上。
5.3 安装后终端提示符变了,看着难受怎么办
很多用户安装完 Miniconda 后会发现终端的提示符前面多了一个(base),有些习惯了干净提示符的用户会觉得很别扭。这个是我们再熟悉不过的场景了。如果你只是不想看到(base),但还想保留 conda 环境管理功能,可以运行:
conda config --set auto_activate_base false执行完后,打开新终端就不会自动激活 base 环境了。当你需要进入某个环境时,手动执行conda activate 环境名即可。如果你决定彻底不用 conda 了,那就按第 4 节的方法卸载。
5.4 卸载完后 PATH 里有残留导致 python 指向不存在的路径
有时候卸载完 Miniconda,执行which python还会提示类似/home/xxx/miniconda3/bin/python不存在的路径。这是因为你只是删除了目录,但.bashrc里的配置没清理,或者当前终端会话还保留着旧的 PATH。解决办法很简单:
- 执行
source ~/.bashrc重新加载配置。 - 彻底关闭当前终端窗口,再重新打开一个。
- 如果还不行,检查
~/.bashrc、~/.profile、~/.bash_profile这几个文件里有没有残留的 export。
5.5 安装或卸载过程中断导致半成品状态
有朋友遇到过下载安装包到一半断了,重新执行安装脚本时报错的情况。建议先删除已经下载好的.sh文件,重新用 wget 下载。安装中断导致~/miniconda3目录不完整,也可以直接删掉这个目录再重新装。卸载过程中如果没有先退环境就删除目录,随后打开终端可能会看到一堆Command 'conda' not found的错误,大概率是conda shell hook返回了非零状态。此时就按照第 4 节结尾的验证方法来处理,把.bashrc里的 conda 配置块删干净即可恢复。
一些我的个人体会
在 Ubuntu 上安装和卸载 Miniconda 这个操作,本身并不复杂,但很多坑都出在“不了解原理”或者“路径搞混”上。我用 Miniconda 做 Python 环境的统一管理已经快三年了,中间换过机器、重装过系统,也帮别人清理过旧的 Anaconda,深有感触的是:环境管理工具最重要的是形成肌肉记忆,安装时读清楚每个提示,卸载时按部就班别乱删。这篇文章里提到的每一步,都是我实际操作过并且确认有效的方式。尤其提醒新手,不要在遇到安装失败时就放弃,很多情况下都是权限、路径、版本架构这三类问题之一,对照上面排查思路,解决只是时间问题。