
1. 为什么 Ubuntu 下装 Anaconda 这件事值得单独写一篇在 Ubuntu 上装 Anaconda表面上看就是下载一个.sh文件、跑一条命令、一路回车的事。但我见过太多人卡在几个非常具体的地方装完之后终端前面多了一个(base)每次开终端都自动激活看着烦conda activate xxx报CommandNotFoundError: run conda init before conda activate用sudo装完之后普通用户找不到 conda装完发现系统自带的 Python 被顶掉了python3指向变了导致系统工具出问题。这些坑的共同点是它们都不是安装失败而是装完之后环境乱了。Anaconda 本身安装成功率很高真正难的是装完之后怎么和 Ubuntu 系统 Python 和平共处。这篇就把从下载、校验、安装、初始化、换源、建环境、迁移目录到卸载的完整链路讲清楚重点放在那些官方文档一笔带过、但实际会咬人的细节上。适合谁看刚在 Ubuntu物理机、虚拟机、WSL 都算上准备做 Python 开发的人被conda init报错卡住的人想把 conda 目录从系统盘挪到数据盘的人以及装完之后发现终端变丑、想恢复干净的人。下面所有命令都在 Ubuntu 20.04 / 22.04 / 24.04 上实测过路径和报错信息以这几个版本为准。2. 装之前先想清楚Anaconda、Miniconda、系统 Python 到底选哪个2.1 三个东西的关系用一句话说清Ubuntu 自带一个 Python通常在/usr/bin/python3系统里很多工具比如apt的部分脚本、ubuntu-drivers依赖它。这个 Python 你绝对不能动动了轻则某些命令报错重则系统更新出问题。Anaconda 是一个自带 Python 的发行版它把 Python 解释器、conda 包管理器、几百个常用科学计算库打包在一起装在自己的目录里默认~/anaconda3。它不替换系统 Python而是通过修改PATH和 shell 配置让你在终端里优先用到它自带的 Python。Miniconda 是 Anaconda 的精简版只带 conda 和 Python不带那几百个库。安装包大概 100MB 出头Anaconda 完整版接近 1GB。2.2 选哪个看你的真实需求方案安装包大小装完占用适合场景Anaconda 完整版约 900MB~1.2GB3~5GB新手、数据科学、不想一个个装 numpy/pandasMiniconda约 100MB500MB 左右老手、只要 conda 的管理能力、磁盘紧张系统 Python venv00纯 Web 开发、不想引入 conda 体系我的建议很直接如果你是第一次在 Linux 上搭 Python 环境装 Anaconda 完整版。多占的那几个 G 磁盘换来的是不用折腾 numpy 编译、不用管 BLAS 链接、不用配 matplotlib 后端这笔账划算。等你熟了再换 Miniconda 也不迟。注意不要用sudo安装 Anaconda。用 root 装到/opt或/root下普通用户用不了后面权限问题能烦死你。永远装到当前用户的家目录。2.3 磁盘空间和路径的提前规划装之前先df -h看一眼家目录所在分区。Anaconda 完整版装完加上后续建几个环境轻松吃掉 10GB。如果你的/home是单独分区且不大或者你用的是云主机系统盘只有 20GB那就要提前决定是装 Miniconda还是把 conda 目录放到数据盘。这里有个关键点conda 的安装路径一旦定下来后面迁移很麻烦虽然能迁但容易出问题。所以宁可装之前多花两分钟想清楚。我一般推荐两种路径家目录够大直接~/anaconda3最省事。有数据盘装到/data/anaconda3这类路径装的时候用-p指定。3. 下载与校验别跳过 sha256 这一步3.1 拿到正确的下载链接Anaconda 官方下载页会给出 Linux 版的.sh安装脚本。文件名格式类似Anaconda3-2024.xx-Linux-x86_64.sh。注意区分架构绝大多数是x86_64如果你用的是 ARM 机器比如某些云主机、树莓派要选aarch64版本选错了装不上。在服务器上没图形界面用wget或curl直接拉cd /tmp wget https://repo.anaconda.com/archive/Anaconda3-2024.10-1-Linux-x86_64.sh版本号会随时间更新去官网复制当前最新版的链接即可。下载慢的话国内有镜像站提供同样的安装包链接结构类似把域名换掉就行。3.2 校验完整性这一步真的有用大文件下载过程中断、被中间设备篡改、镜像站同步不完整都会导致安装脚本损坏。损坏的脚本跑起来可能报各种莫名其妙的错甚至解压到一半失败留下垃圾。校验方法sha256sum Anaconda3-2024.10-1-Linux-x86_64.sh把输出的一长串哈希和官网下载页给出的 sha256 值对比。必须完全一致。不一致就删掉重下别抱侥幸心理。提示如果官网只给了 md5那就用md5sum。总之官方给什么校验值就用什么别跳过。3.3 给脚本加执行权限下载下来的.sh默认没有执行权限直接./xxx.sh会报Permission denied。两种做法chmod x Anaconda3-2024.10-1-Linux-x86_64.sh ./Anaconda3-2024.10-1-Linux-x86_64.sh或者不改权限直接用 bash 跑bash Anaconda3-2024.10-1-Linux-x86_64.sh第二种更省事我一般用这种。4. 安装过程逐屏拆解每一屏在问你什么4.1 许可协议和安装路径运行脚本后第一屏是许可协议按回车翻页翻到底会让你输入yes表示同意。这里必须完整输入yes输入y不认。接着会问安装路径默认是~/anaconda3。如果你要装到别处在这里输入完整路径。路径里不要有中文、空格虽然理论上支持但后续脚本调用容易出问题。4.2 最后那个是否 conda init的问题是最大的坑安装快结束时会问Do you wish the installer to initialize Anaconda3 by running conda init? [yes|no]这一屏是整篇最关键的地方。选yes和选no的区别选yes安装器会修改你的~/.bashrc加入一段 conda 初始化代码。之后每次打开终端会自动激活base环境终端提示符前面出现(base)。选no什么都不改你需要自己手动初始化或者每次手动 source。很多人选yes之后后悔因为(base)一直挂着而且 base 环境里的 Python 会覆盖系统 Python导致一些依赖系统 Python 的工具行为异常。我的建议分两种情况新手、就想开箱即用选yes然后按第 5 节把自动激活关掉。对系统环境敏感、机器上跑着别的服务选no之后按需手动初始化。如果你已经手快选了yes又后悔别急着重装第 5 节有干净的恢复方法。4.3 安装完成后先别急着用安装脚本跑完最后会提示Thank you for installing Anaconda3!。这时候当前终端里 conda 还不能用因为.bashrc的修改要新开终端才生效。你可以source ~/.bashrc或者直接关掉终端重开。然后验证conda --version python --version which pythonwhich python应该指向~/anaconda3/bin/python。如果指向/usr/bin/python说明初始化没生效看下一节。5. conda init 报错与 base 自动激活的彻底处理5.1run conda init before conda activate到底怎么回事这个报错几乎每个人都遇到过。原因是conda activate这个命令本身是一个 shell 函数不是可执行文件。它必须由 conda 的初始化脚本注入到你的 shell 里才能用。如果你只是把~/anaconda3/bin加进了PATH那你能用conda命令但用不了conda activate。解决方法是执行一次初始化~/anaconda3/bin/conda init bash如果你用的是 zsh就conda init zsh。执行完它会告诉你修改了哪个文件通常是~/.bashrc然后source ~/.bashrc或重开终端。初始化之后.bashrc里会多出类似这样一段# conda initialize # !! Contents within this block are managed by conda init !! __conda_setup$(/home/你的用户名/anaconda3/bin/conda shell.bash hook 2 /dev/null) if [ $? -eq 0 ]; then eval $__conda_setup else if [ -f /home/你的用户名/anaconda3/etc/profile.d/conda.sh ]; then . /home/你的用户名/anaconda3/etc/profile.d/conda.sh else export PATH/home/你的用户名/anaconda3/bin:$PATH fi fi unset __conda_setup # conda initialize 这段代码不要手动改它是 conda 自己管理的。要改行为用conda config命令。5.2 关掉每次开终端自动激活 base初始化后默认每次开终端都激活 base提示符变成(base) userhost:~$。想关掉conda config --set auto_activate_base false执行完重开终端(base)就没了。需要时手动conda activate base或激活别的环境。这个设置写在~/.condarc文件里。你可以cat ~/.condarc看看里面就是一行auto_activate_base: false。5.3 已经装乱了怎么干净恢复如果你之前用sudo装过、或者手动往.bashrc里加过 PATH、或者装了两个版本环境会很乱。恢复步骤打开~/.bashrc删掉所有和 conda/anaconda 相关的行包括conda initialize那个块和手动加的export PATH...anaconda3/bin...。删掉安装目录rm -rf ~/anaconda3确认路径没错再删。删掉配置rm -f ~/.condarc ~/.conda。重开终端which python应该回到/usr/bin/python3。按第 3、4 节重新装一遍。注意rm -rf之前一定ls确认目录内容别把家目录删了。这种低级错误每年都有人犯。6. 换源不换源你会在下载包时怀疑人生6.1 为什么要换源conda 默认从官方源下载包国内访问速度经常只有几十 KB/s装个 pytorch 能等到天亮。换成国内镜像源速度能到几 MB/s 甚至十几 MB/s。6.2 换源的正确姿势不要一条条conda config --add channels手动加容易加乱顺序。直接编辑~/.condarcconda config --set show_channel_urls yes然后vim ~/.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 -i6.3 换源后的两个常见问题问题一CondaHTTPError或 SSL 报错。多半是镜像地址写错、或者镜像站临时不可用。先用curl测一下地址通不通再检查.condarc缩进YAML 对缩进敏感必须用空格不能用 Tab。问题二某些包在镜像源里找不到。镜像同步有延迟新发布的包可能还没有。临时用官方源装conda install -c defaults 包名或者干脆用 pip 装见 6.4。6.4 conda 和 pip 混用的边界conda 管不了的包比如很多纯 Python 的小众库用 pip 装。但要注意在 conda 环境里用 pip一定要用这个环境自己的 pip也就是~/anaconda3/envs/环境名/bin/pip而不是系统的 pip。激活环境后直接pip install通常没问题因为激活时 PATH 已经指向环境内的 pip。混用的风险是pip 装的包 conda 不知道conda list里能看到但conda remove删不干净。所以原则是能用 conda 装的就用 condaconda 没有的再用 pip并且尽量先 conda 后 pip别反过来。7. 建环境、迁移目录与卸载长期使用的三件事7.1 为什么一定要用虚拟环境base 环境是 conda 自己的系统环境不要往 base 里装项目依赖。原因很简单项目 A 要 numpy 1.20项目 B 要 numpy 1.26装一起必冲突。每个项目一个独立环境互不干扰。建环境conda create -n myproject python3.9 conda activate myproject-n后面是环境名python3.9指定版本。建完激活which python应该指向~/anaconda3/envs/myproject/bin/python。常用管理命令conda env list # 列出所有环境 conda deactivate # 退出当前环境 conda remove -n myproject --all # 删除整个环境 conda list # 列出当前环境的包7.2 把 conda 目录迁到数据盘系统盘快满了想把~/anaconda3挪到/data/anaconda3直接mv是不行的因为环境里很多脚本写死了绝对路径。正确做法有两种方法一用 conda 自带的克隆推荐最稳conda create -p /data/anaconda3 --clone base然后改.bashrc里的初始化路径把~/anaconda3全部替换成/data/anaconda3重开终端验证。方法二整体移动后修复mv ~/anaconda3 /data/anaconda3然后编辑.bashrc改路径并且要修复每个环境里的硬编码路径。这个方法容易漏不推荐新手用。提示迁移前先conda env export environment.yml备份环境定义万一迁坏了还能重建。7.3 彻底卸载 Anaconda不想用了干净卸载conda install anaconda-clean anaconda-clean --yes rm -rf ~/anaconda3然后手动清理~/.bashrc里的 conda initialize 块删掉~/.condarc、~/.conda、~/.anaconda_backup。重开终端确认which python回到系统 Python。8. 几个真实踩过的坑和对应解法8.1 坑一装完终端启动变慢.bashrc里 conda 初始化那段每次开终端都要执行如果 conda 装在慢速磁盘或者网络盘上终端启动会明显变慢。解法把auto_activate_base设为 false 能省一点但初始化本身还在。如果实在慢可以考虑用conda init --reverse撤销初始化改成需要时手动source ~/anaconda3/etc/profile.d/conda.sh。8.2 坑二SSH 远程登录后 conda 命令找不到本地终端好好的SSH 上去conda: command not found。原因是 SSH 非交互式登录不读.bashrc或者读的是.bash_profile。解法确认 conda 初始化写在了登录时会读的文件里。可以在~/.bash_profile里加一行source ~/.bashrc或者把初始化块放到.profile。8.3 坑三conda activate在脚本里失效写 shell 脚本时conda activate报错因为脚本是非交互 shell。解法脚本开头加source ~/anaconda3/etc/profile.d/conda.sh conda activate myproject这样不依赖.bashrc最可靠。8.4 坑四CUDA 版本和 conda 装的 pytorch 对不上装 pytorch 时conda install pytorch torchvision torchaudio pytorch-cuda11.7 -c pytorch -c nvidia装完torch.cuda.is_available()返回 False。多半是驱动版本和 cuda 版本不匹配。先用nvidia-smi看驱动支持的 CUDA 版本再选对应的 pytorch-cuda 版本。conda 装的 cuda 运行时是环境内的不依赖系统 CUDA但依赖驱动。8.5 坑五中文输入法在终端里候选框乱跳这个和 Anaconda 无关但 Ubuntu 新手常一起遇到。终端里用 fcitx 输入中文候选框位置飘。解法换用 fcitx5或者在终端设置里调整。这个属于系统输入法配置单独处理。9. 我个人的使用习惯和最后几句实在话用了几年下来我现在的固定做法是装 Miniconda 而不是完整版因为完整版里那几百个包我 90% 用不上反而拖慢环境创建auto_activate_base永远设 false保持终端干净每个项目一个环境环境名和项目名一致方便conda env list时一眼认出来.condarc里配好国内源conda clean -a定期清缓存。还有个小技巧把常用环境的激活写成 alias 放进.bashrc比如alias caconda activate敲起来快很多。以及conda env export --no-builds environment.yml导出的环境文件跨平台兼容性更好换机器重建环境时少踩坑。Anaconda 这东西装本身不难难的是理解它和系统 Python 的边界、理解 conda 的初始化机制。把这两点搞明白后面用起来就顺了。真遇到报错先看报错信息里让你run conda init还是command not found对症下药基本都能自己解决。