ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Linux Miniconda 安装与避坑指南:从下载到卸载

Linux Miniconda 安装与避坑指南:从下载到卸载 如果你在搜索引擎里输入“Linux 安装 Miniconda”能翻出上百篇教程。但我猜你和我当年第一次操作时一样装完之后依然会遇到各种问题conda 命令找不到pip 装不上包下载慢到怀疑人生。不是教程没写而是教程太零散有的只讲安装脚本怎么跑有的把环境变量一笔带过有的干脆连文件校验都没提。所以我把这条完整路径重新捋了一遍从下载、校验、安装、环境变量配置到日常使用、常见坑排查、彻底卸载全走一遍每一步的取舍理由也一并说清楚。不管你是刚接触 Linux 的新手还是被 Anaconda 体积困扰的老手又或者需要在十几台服务器上重复部署环境这条流程都值得参考。1. 为什么推荐 Miniconda它和 Anaconda 到底差在哪1.1 安装包体积和理念的差异Anaconda 和 Miniconda 都是 Continuum Analytics 团队出品的发行版但思路完全不同。Anaconda 默认捆绑了 250 多个科学计算包包括 numpy、pandas、scikit-learn、matplotlib 这类重量级库安装包动辄 800 MB 到 1 GB装完之后磁盘占用轻松超过 3 GB。而 Miniconda 只包含 conda 包管理器、Python、pip 以及少量基础依赖安装脚本不到 100 MB装完占用大概 400 MB 到 600 MB。这个体积差距在个人电脑上感觉不明显但在服务器上差别很大。我最早在一台只有 1 GB 内存的云服务器上装 Anaconda光初始化就卡到怀疑人生随便建个环境就要半天。后来换成 Miniconda基础环境秒开需要什么包再临时装整个服务器的负载都下来了。所以 Miniconda 的核心理念是“按需安装”而不是把全家桶先塞给你。从维护角度看Miniconda 也更容易排查问题。Anaconda 自带的那一堆包很多项目根本用不上却一直躺在 PATH 里有时还会和系统自带的 Python 抢命令优先级造成各种隐形冲突。Miniconda 干净得多出问题你只需要盯住 conda 这一层。1.2 哪些场景适合选 Miniconda根据我自己的使用经验这三类场景基本上可以无脑选 Miniconda第一服务器和容器环境。无论是裸机、虚拟机还是 Docker 镜像Miniconda 体量小、安装快、依赖少非常适合作为基础环境。你只需要在 Dockerfile 里加两层命令就能得到一个干净的 Python 运行时。第二对系统有“洁癖”的开发者。Miniconda 默认不动系统自带的 Python所有内容都装在自己的目录里卸载也就删一个文件夹的事不会污染系统环境。这一点对比那些安装完就往 /usr 下面塞一堆东西的发行版优势非常明显。第三需要反复迁移、克隆环境的团队。Miniconda 配合 environment.yml 文件可以在不同机器上精准复现同一套环境。Anaconda 虽然也能做到但庞大的底座让迁移速度慢很多尤其是跨机器拷贝时差距非常明显。1.3 conda 的核心价值不只是 Python 环境管理很多新手以为 Miniconda 只是“缩小版的 Anaconda”其实它真正的核心不是自带多少包而是 conda 这个包管理器和环境管理器。Python 自带的 venv 只解决 Python 包的隔离但管不了底层的编译依赖。比如某些科学计算库需要特定版本的 OpenSSL、MKL 或者 CUDA 运行库venv 就无能为力了。conda 则可以把 Python 解释器、C/C 依赖库、系统库全部打包进一个环境里不同环境之间互不干扰。我举个例子你就明白了。现在有一个老项目要跑 Python 3.8 和 pandas 1.3还有一个新项目要用 Python 3.11 和最新版 NumPy直接装系统里肯定打架。用 conda 的话我只要创建两个环境conda create -n old_project python3.8 conda create -n new_project python3.11需要哪个就激活哪个完全隔离。这也是为什么我强烈推荐新手直接学 conda 的环境管理而不是用 sudo pip install 一股脑装到全局——后者一旦装坏只能重装系统。2. 动手之前的环境准备下载、校验、依赖一件不落2.1 先搞懂系统架构和发行版很多人一上来就复制安装命令结果跑完发现“cannot execute binary file”之类的报错问题多半出在系统架构上。Miniconda 的安装脚本是按 CPU 架构区分发布的最常见的有两个x86_64 对应 Intel/AMD 的 64 位 CPUaarch64 对应 ARM 架构的 CPU比如树莓派、飞腾、鲲鹏这类机器。在下载之前先在终端里跑一下uname -m cat /etc/os-releaseuname -m 会告诉你 CPU 架构cat /etc/os-release 会告诉你具体的发行版和版本号。绝大多数云服务器和 PC 返回的是 x86_64对应安装包名是 Miniconda3-latest-Linux-x86_64.sh。树莓派等 ARM 设备返回的是 aarch64需要下载 Miniconda3-latest-Linux-aarch64.sh。至于发行版Ubuntu、Debian、Kali 这类 Debian 系的系统支持比较平滑CentOS、Rocky、openSUSE 等发行版理论上也没问题因为安装包本身就是静态编译好的脚本不依赖某个系统的包管理器。不过不同系统的默认 shell 和 PATH 管理方式略有差异后面配置环境变量时要注意区分 bash 和 zsh。2.2 下载安装脚本的几种方式确认好架构之后就可以下载安装脚本了。最简单的办法是直接在服务器上用 wget 从官方源拉取wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh如果你没有 wget用 curl 也一样curl -O https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh但这里有个现实问题官方服务器在国外国内网络的下载速度经常只有几十 KB/s一个 100 MB 的脚本能下载半小时。我的建议是直接用国内开源镜像站速度和稳定性都有保障。清华大学的 TUNA 镜像源就是一个很好的选择wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh如果你在合肥、南京等地区也可以换成中科大镜像源wget https://mirrors.ustc.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh注意镜像站的文件名通常和官方源保持一致所以下载完之后要顺手检查一下文件的哈希值确认镜像没有损坏或受到篡改。2.3 校验脚本完整性安全这一步不能省安装脚本本质上就是一段需要在你的机器上以当前用户权限执行的代码所以下载后绝对不要直接运行一定要先校验 SHA-256 哈希值。在终端里执行sha256sum Miniconda3-latest-Linux-x86_64.sh会得到一串 64 位的十六进制字符串类似这样e1d5944536b4d1c7907e1d5a1c3f9cde... Miniconda3-latest-Linux-x86_64.sh然后登录官方下载页或者镜像站的 checksum 页面找到对应文件的官方哈希值逐位比对。只要有一位不一致就不要执行这个安装脚本。可能有读者觉得这一步无所谓但我见过不止一次因为下载文件不完整导致安装中途失败的案例。更严重的是如果下载源被劫持或篡改你运行的可能就是一段恶意代码。我之前给公司服务器配置环境时所有上传到服务器的安装包都会验一遍哈希这个习惯建议从第一次装 Miniconda 就开始养成。2.4 磁盘空间和临时目录检查安装 Miniconda 需要临时解压文件所以 /tmp 目录必须有足够的空间。有次我帮同事在一台磁盘快满的机器上装安装脚本跑到一半就因为磁盘空间不足中断了最后清理了半天日志才算救回来。安装之前用两个命令检查一下df -h /tmp df -h /home第一行看临时目录余量第二行看目标目录余量。Miniconda 本身只需要几百 MB 空间但如果你的 /tmp 目录只剩 50 MB就得先把临时目录指到别的地方再运行安装脚本export TMPDIR/data/tmp顺手检查一下目标分区没问题之后就可以正式开始安装了。3. 核心安装过程脚本、环境变量与 shell 初始化3.1 安装脚本的执行过程校验通过之后在安装脚本所在目录执行bash Miniconda3-latest-Linux-x86_64.sh这里我特意强调要用 bash 执行而不是 sh。有些系统的 /bin/sh 指向的是 dash兼容性不如 bash直接用 sh 执行有时会报莫名其妙的语法错误。脚本运行后会进入一个交互流程主要经历这几个步骤显示许可协议按 Enter 键逐行翻页一直翻到出现“Do you accept the license terms?”时输入 yes 回车。确认安装路径。默认情况下普通用户会装到 /home/用户名/miniconda3root 用户会装到 /root/miniconda3。如果你想要自定义路径在这里输入绝对路径即可。询问是否让安装器运行 conda init 来初始化 shell。这一步非常关键一定要输入 yes否则装完之后直接打开新的终端找不到 conda 命令。安装完成后脚本会提示你执行source ~/.bashrc这一步的作用是重新加载 shell 配置文件让刚才写入的 conda 初始化代码立即生效。3.2 安装位置的选择与目录规划安装位置这个选择容易被新手忽略但实际上挺重要。如果这台机器只有你自己用默认的 home 目录路径完全够用最简单。如果是一台多人共用的服务器我建议装在 /opt 目录下比如 /opt/miniconda3这样所有用户都能按需访问。但要注意装在 /opt 需要目录权限安装时要用 sudo 执行sudo bash Miniconda3-latest-Linux-x86_64.sh -b -p /opt/miniconda3我用过一次教训比较深刻的方案当时图省事直接 sudo 装到了 /root/miniconda3结果普通用户连执行 conda 的权限都没有后面每次跑项目都得切换用户烦不胜烦。如果你是给团队搭环境最好单独创建一个用户比如 conda 用户专门管理 Miniconda然后让团队成员通过 group 权限去访问这样权限边界清晰出问题也不会波及系统账户。3.3 环境变量配置为什么装完 shell 还是找不到 conda安装完成后最常遇到的尴尬就是明明脚本跑完了但一开新终端输入 conda --version提示 command not found。出现这个问题的原因八成是环境变量没配对。conda 的可执行文件在安装目录的 bin 子目录下系统不会自动去找这个路径必须把它加进 PATH。如果安装时选择了不初始化或者 shell 配置文件没有正确加载conda 命令自然找不到。手动配置其实很简单。用编辑器打开 ~/.bashrc在文件末尾加一行export PATH/home/用户名/miniconda3/bin:$PATH然后执行source ~/.bashrc这里我特意说明一点为什么加在 .bashrc 而不是 .bash_profile 或者 /etc/profile因为交互式 shell 打开时会自动加载 .bashrc而 .bash_profile 只在登录 shell 时加载一次很多终端工具打开的新窗口属于非登录 shell不会读 .bash_profile这种时候 conda 就处于“时灵时不灵”的状态。至于 /etc/profile影响范围是全系统所有用户不推荐轻易改动。PATH 的顺序也要注意。把 miniconda3/bin 放在 $PATH 前面系统才会优先找到 conda 的 Python而不是 /usr/bin/python。这一点在同时装了系统 Python 的机器上尤其关键。3.4 conda init 究竟做了什么如果你安装时选择了让安装器初始化 shell打开 .bashrc 就能看到这样一段内容# conda initialize # !! Contents within this block are managed by conda init !! __conda_setup$(/root/miniconda3/bin/conda shell.bash hook 2 /dev/null) if [ $? -eq 0 ]; then eval $__conda_setup else if [ -f /root/miniconda3/etc/profile.d/conda.sh ]; then . /root/miniconda3/etc/profile.d/conda.sh else export PATH/root/miniconda3/bin:$PATH fi fi unset __conda_setup # conda initialize 这一段代码的作用是让 conda 在每次打开 shell 时自动加载自身函数和 PATH 配置。除了 bash它还支持 zsh、fish 等常见 shell。如果你安装时选了 no后面想补上只需要执行conda init bash如果你是 zsh 用户conda init zsh再提醒一句这段由 conda init 管理的配置块平时不要手动改里面的内容。以后如果升级 conda它会自动更新这一段你改了反而可能导致初始化失败。实在想清理卸载 Miniconda 的时候直接把整块删掉就行后面第 6 节会详细说。4. 安装完成后的验证与日常使用基础操作一次讲清4.1 验证三件套conda、python、pip配置完环境变量之后先别急着建环境用下面三个命令确认安装结果conda --version python --version pip --version三条命令都应该显示正常版本信息。如果 conda 输出了版本号但 python 显示的还是系统自带的老版本那就说明 PATH 顺序有问题。这时用 which 查看实际路径which conda which python which pip正常情况下三个路径都应该指向 miniconda3/bin 目录。如果 which python 返回 /usr/bin/python你需要重新检查 .bashrc 里的 export PATH 是否写在了文件末尾以及路径是否在 $PATH 前面。这里还有一个容易踩的细节终端里如果之前已经缓存了旧的命令路径执行 hash -r 刷新一下 shell 的命令哈希表否则改了 PATH 之后可能还是执行旧路径。4.2 环境创建与切换让每个项目各用各的环境Miniconda 最值钱的功能就是环境隔离安装完成后的第一件事应该学会创建环境而不是直接往 base 环境里装包。我强烈建议一个项目创建一个独立环境不要长期在 base 环境下工作。base 可以看成是 conda 自己的“系统盘”一旦装坏了整个 conda 都跟着遭殃。而项目环境坏了大不了删除重建几分钟就能恢复。最基本的三个命令先掌握conda create -n myenv python3.10 conda activate myenv conda deactivate第一行创建名为 myenv 的环境并指定 Python 版本为 3.10第二行激活环境第三行退出环境。日常操作中用下面的命令表帮助记忆操作需求命令创建环境conda create -n 名称 python3.10激活环境conda activate 名称退出环境conda deactivate查看所有环境列表conda env list删除环境conda env remove -n 名称导出环境配置conda env export environment.yml根据配置创建环境conda env create -f environment.yml导出和恢复环境这个功能特别适合团队协作。你在自己的机器上装好的依赖导成 environment.yml 发给同事对方一条命令就能复现一套完全一致的环境再也不用在文档里手写依赖清单了。4.3 包管理conda install 与 pip 的边界环境激活后安装第三方包的方式主要有两种conda install 和 pip install。两者的关系经常把人绕晕我简单说清楚。conda install 从 conda 的软件源安装包优点是会自动处理二进制依赖。比如安装 pytorch 这种需要 CUDA 支持的重型库conda 会把配套的 cudatoolkit 一起装上不需要你自己操心版本匹配。pip 从 PyPI 安装纯 Python 包或预编译二进制包安装速度快但依赖管理相对弱一些。我的使用原则是优先用 conda installconda 源里没有的包再用 pip。比如conda install numpy pandas python -m pip install requests注意这里 pip 我特意写成 python -m pip这是为了避免一个很常见的问题。如果你在环境里直接敲 pip install它找到的可能是系统级的 pip装到不正确的路径下。写成 python -m pip可以确保是用当前激活环境对应的 Python 解释器去执行 pip装到的位置一定正确。这个细节非常实用建议形成肌肉记忆。4.4 顺手配置国内镜像源告别下载龟速如果不配置镜像源conda 默认走 repo.anaconda.com国内下载速度非常痛苦建个环境等十几分钟都算正常。配置镜像源最简单的方式是编辑 ~/.condarc 文件加入清华镜像的配置channels: - defaults show_channel_urls: true default_channels: - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2 custom_channels: conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud配置完后执行 conda clean -i 清理索引缓存再建环境速度会快很多。pip 源也需要顺手改一下pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/改完之后 pip install 的速度提升立竿见影。镜像源的配置本质上只是换了一个下载入口不影响包的内容和兼容性可以放心使用。5. 上手之后最常见的几个坑和处理办法5.1 “装好的 python 不能直接用 pip”多半是 pip 指错了这个坑太经典了我自己就帮同事排查过好几回。表面现象是Miniconda 装好了conda 建的环境也能激活但执行 pip install 时报错或者安装之后 import 死活找不到包。排查命令先走一圈which -a pip python -m pip --version第一行会列出系统里所有 pip 的路径如果发现有 /usr/bin/pip 排在前面那么直接敲 pip 用的就是系统级 pip而不是 conda 环境里的。第二行用当前的 Python 解释器执行 pip 模块能正确显示 conda 环境的版本和路径。解决办法有两个一是以后统一用 python -m pip 代替直接 pip二是把环境里的 pip 重新安装一遍python -m pip install --upgrade pip --force-reinstall另外执行 hash -r 刷新终端缓存避免旧路径残留。这个坑其实不算 Miniconda 的问题而是多 Python 共存时 PATH 管理的老问题但遇到时确实很容易让人误以为“Miniconda 坏了”。5.2 conda 命令找不到不是没装好是 shell 没初始化很多人安装时图省事一路回车到底结果安装器问“Do you wish the installer to initialize Miniconda3”时默认选了 no装完在终端里输入 conda 就提示 command not found。这里的判断逻辑是先确认安装目录存在再看 shell 配置文件里有没有初始化块ls -d ~/miniconda3 grep -n conda ~/.bashrc如果目录在但 .bashrc 是空的直接补初始化~/miniconda3/bin/conda init bash source ~/.bashrc注意这里因为 conda 还没加入 PATH需要先用完整路径调用 conda 命令。如果你的默认 shell 是 zsh把命令里的 bash 换成 zsh 即可。还有一种情况是终端程序本身的问题。某些终端在打开时不会自动加载 .bashrc而是只加载 .profile 或 .zprofile这时哪怕配置写了也没生效。最简单的方式是重开一个终端窗口或者执行 source ~/.bashrc 手动加载基本都能解决。5.3 下载慢、超时的解决思路在国内网络环境下配完镜像源能解决 90% 的下载问题但还有 10% 的情况需要特殊处理。一个典型问题是 conda install 时卡在 Solving environment 阶段过了半天没反应。这多半不是网络问题而是依赖解析太慢。可以先取消操作然后执行conda clean -a清理一下索引缓存和下载缓存再重试。如果还慢参考下一节的求解器优化。另一个问题是某些包在默认 channel 里没有需要从 conda-forge 安装。这时可以直接指定 channelconda install -c conda-forge 包名还有时候下载包时网速波动大反复超时。可以临时加大 conda 的下载超时时间conda config --set remote_read_timeout_secs 120 conda config --set remote_connect_timeout_secs 60这些参数按实际网络质量调整配置在 .condarc 里不影响其他功能。5.4 依赖解析慢的进阶解法换个求解器如果你安装的包依赖比较多比如装 pytorch 这种大型框架conda 的默认求解器经常要跑好几分钟控制台一直显示 Solving environment。这是因为 conda 默认的经典求解器工作时会回溯依赖树把所有版本组合都检查一遍当依赖关系复杂时计算量指数级增长。解决办法是启用基于现代算法的高性能求解器 libmambaconda config --set experimental_solver libmamba或者安装官方推荐的 libmamba 求解器包conda install -n base conda-libmamba-solver启用后再建环境速度提升非常明显。我自己的测试中同一个需要装 pandas、numpy、scikit-learn 的环境旧求解器耗时 3 分钟起步换 libmamba 之后十几秒就搞定。新版本 conda 已经把这套求解器作为默认推荐如果你装的是最新版可能需要确认一下 conda --version 是否在 22.11 以上。6. 彻底卸载 Miniconda 的正确姿势6.1 卸载前先想清楚的事Miniconda 的卸载没有官方的一键脚本因为 conda 会把配置文件和安装目录分散到好几个地方。如果直接 rm -rf 安装目录系统里还会残留一堆配置和 PATH 环境变量后续使用会有隐患。卸载之前先看看自己有哪些环境避免误删工作成果conda env list如果某个环境需要保留可以用导出命令留下备份conda env export -n env_name env_name.yml然后退出当前所有环境确保不依赖 conda 提供的命令后再开始清理。6.2 清理安装目录与 shell 配置卸载的核心是三步删除安装目录、删除用户配置、清理 shell 配置。第一步删除主程序目录。以默认路径为例rm -rf ~/miniconda3第二步清理用户级配置文件rm -rf ~/.conda rm -f ~/.condarc rm -rf ~/.continuum第三步清理 .bashrc 里的 conda 初始化块和手动加的 PATH。打开编辑器删除对应内容或者用 sed 命令清洗sed -i /^# conda initialize/,/^# conda initialize/d ~/.bashrc这条命令会把 .bashrc 中从“# conda initialize”到“# conda initialize”之间的所有行删除。如果你之前手动加过 export PATH 那一行也需要一并删掉。6.3 卸载后的残留检查PATH 与环境变量清理完成后开一个新终端验证卸载是否彻底conda --version echo $PATH第一条命令应该提示 command not found第二条命令的输出中不应该再包含任何 miniconda 路径。如果 echo $PATH 里还残留 miniconda 路径说明 .bashrc 或 .profile 中还有没删干净的配置。再检查一下 /etc/profile.d/ 目录下有没有 conda 相关的脚本ls /etc/profile.d/ | grep conda如果当初安装时使用了系统级配置这里可能会有 conda.sh 之类的文件一并删除即可。最后执行 hash -r 刷新命令缓存避免当前 shell 还在使用旧路径。重开终端是最稳妥的检查方式如果新终端里都正常说明卸载已经干净利落。最后再分享一个我个人的习惯每次在一台新服务器上装完 Miniconda我都会在同一个终端里把安装路径、版本号和日期记录到项目说明文件里同时备份一份干净的 .bashrc。时间一长这套流程就成了肌肉记忆不管是替同事排查环境问题还是往新机器上快速复制一套环境都能省下不少时间。希望这篇操作记录也能帮你少踩几个坑一次装到位。
返回列表