1. 装之前先想清楚Anaconda到底解决什么问题先说个我自己的感受。每次重装Ubuntu新系统装好之后的前二十分钟我几乎都在折腾同一件事把Anaconda装好然后配源、建虚拟环境、拉Python依赖。这套流程我走过几十遍踩过的坑说多不多但每次朋友问我“Ubuntu怎么装Anaconda”我还是会提醒一句别急着下一步下一步装之前先想明白它到底是干嘛的能帮你避免后面一小时的排错。Anaconda说白了就是一个 Python 发行版它自带一个叫 conda 的包管理器。和 pip 不同的是conda 不仅能管理 Python 库还能直接管理 Python 解释器版本本身并且天然支持创建隔离的虚拟环境。你可以把 conda 想象成一台带独立储物格的冰箱每个格子是一个环境格子里放什么 Python 版本、什么依赖库互不干扰。今天做数据分析需要 pandas明天搞深度学习需要 PyTorch两套环境共存没有任何冲突这才是 Anaconda 最值钱的地方。适合读这篇内容的人主要是刚把 Ubuntu 装好、准备开始认真搞 Python 开发或者深度学习的同学。如果你只是跑一个十几个文件的小脚本系统自带的 Python 加一个 venv 就够了不一定非得上 Anaconda。但你要是经常折腾数据分析、机器学习或者在 PyTorch 和 TensorFlow 之间反复横跳那 Anaconda 会是你在 Linux 上最省心的选择。还有一个经常被忽略的点下载安装之前一定要确认系统架构。很多人在 x86_64 的机器上下了 ARM 版安装包或者反过来结果安装脚本直接报错。Ubuntu 上先跑一条命令看一下架构uname -m输出x86_64就下载 x86_64 的安装包输出aarch64就下载 ARM64 版本。这一步看似不起眼却能让你避开最常见的下载错误。顺手再确认一下磁盘空间Anaconda 完全装完大概占用 3GB 左右df -h看一下/home分区是否充裕避免装到一半磁盘写满。2. 下载安装完整流程从官网到正式装好2.1 官网下载还是国内镜像源Anaconda 的官方下载地址是https://www.anaconda.com/download直接点 Download 就能拿到 Linux 版本的安装脚本。但官网服务器在海外国内用户下载速度时快时慢经常出现几十 KB/s 的情况。如果你不想等最实用的办法是用国内镜像源下载安装脚本。清华大学的开源镜像站有完整的 Anaconda 安装包归档地址是https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/打开这个目录能看到类似Anaconda3-2024.10-1-Linux-x86_64.sh的文件。版本号会持续更新具体以镜像站当前列出的最新版本为准。我个人的习惯是下载Anaconda3-latest-Linux-x86_64.sh这种 latest 命名格式只要是官方或镜像站提供的 latest 文件就是当前最新版省得每次记版本号。下载用 wget 就行比如wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2024.10-1-Linux-x86_64.sh哪天官网版本变了去目录里抄一下文件名即可。国内还有上海交大、中科大等镜像站不过就 Anaconda 安装包这一件事清华镜像一直很稳我基本没换过。2.2 执行安装脚本时的交互流程下载完成后直接执行安装脚本bash Anaconda3-2024.10-1-Linux-x86_64.sh如果下载的是 latest 文件就写完整的文件名路径不对会出现No such file or directory。安装过程中会有几个交互提示我说一下实际操作时的选择第一步是显示版权的说明一直按 Enter 翻到最后也可以直接按q跳过全文。接着问你是否接受许可协议输入yes回车。然后问安装路径默认是$HOME/anaconda3我强烈建议就用默认路径不要改到/opt或者/usr/local。一个核心原因Anaconda 装在用户目录下不需要 sudo 权限后续创建虚拟环境、更新包都不会出现权限问题。最后它会问Do you wish the installer to initialize Anaconda3 by running conda init?这里一定要选yes。这一步会在你的 shell 配置里写入 conda 初始化代码选 no 的话后面还得手动补纯粹给自己找麻烦。关键提醒安装时不要在前面加sudo。我之前见过有同学用sudo bash Anaconda3-xxx.sh安装结果 Anaconda 装进了/root/anaconda3普通用户根本没法用权限乱成一锅粥。Ubuntu 下安装 Anaconda 只需要普通用户权限就够了默认安装目录就在自己的 home 目录里用起来最顺手。安装完成后关掉终端重新打开或者执行source ~/.bashrc验证一下conda --version能看到conda 24.x.x之类的输出就说明装好了。再运行which python如果路径指向/home/你的用户名/anaconda3/bin/python说明默认 Python 已经切到 Anaconda 环境了。2.3 装完顺手更新一次condaAnaconda 自带的 conda 版本有时候不是最新的装完第一件事我建议先更新 conda 本身conda update -n base conda -y这一步是为了避免后面安装包时出现疑难问题。我不会选择顺手把所有 base 环境的包都更新一遍因为那样往往会把环境的依赖关系搞得很难受而且没有必要。只更新 conda 这个管理器后面创建虚拟环境时新环境的 Python 和核心库都是新装的不会出问题。3. 环境变量与conda init为什么装了却找不到命令3.1 三种配置方式到底该选哪种很多人在网上看到的环境变量配置方法五花八门实际测试过之后我发现其中有不少方式已经过时甚至会产生副作用。最传统的做法是在~/.bashrc里手动加一行export PATH/home/你的用户名/anaconda3/bin:$PATH这种写法确实可行但问题在于它和 Anaconda 自己的conda init机制混在一起时容易导致 PATH 重复添加。而且它只对 bash 生效如果哪天你换了 zsh 或者 fish又要重新配置。更关键的是它不会自动生成 conda 的 shell 函数某些场景下conda activate这种命令会失效。我现在推荐的方式就是安装脚本里已经做过的conda init。它会在~/.bashrc末尾自动写入一段 conda 初始化代码块形如# 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 变成当前 shell 的一个可用命令同时还注册了activate、deactivate等 shell 函数。conda init的流程就是专门为 shell 环境设计的比手动export PATH要完整得多。3.2 .bashrc到底是怎么生效的理解一个小细节为什么改完.bashrc要执行source ~/.bashrc因为.bashrc只是配置文件不会自动重新加载。source的作用是让当前终端重新读取这个文件并执行里面的命令。如果你开了新终端新终端也会自动加载.bashrc不需要再手动 source。但有一个常见的坑如果你把 conda 的初始化代码写在.bash_profile里而.bash_profile又只在新登录 shell 时加载那么你开的普通终端可能永远用不到 conda。Ubuntu 默认的图形界面终端打开的是交互式非登录 shell加载的是.bashrc不是.bash_profile。所以出错后先别瞎改确认你把 conda init 的代码写在.bashrc里并且确实执行过source ~/.bashrc。另外如果你用的是 zsh安装后需要执行conda init zsh然后再source ~/.zshrc。其他 shell 同理conda init后面跟上 shell 名称即可。我在新机器上测试时发现很多人嫌麻烦直接在 zsh 里配export PATH结果 conda activate 永远报错其实就是缺这一步 shell hook。3.3 配置完提示符前面多了个(base)正常吗安装完成后打开终端提示符前面会多一个(base)比如(base) userubuntu:~$这是正常现象说明 conda 初始化成功并且当前默认处于 base 环境。base 环境就是 Anaconda 自带的那个主环境。如果你不喜欢自动进入 base可以关掉这个特性conda config --set auto_activate_base false设置后新开的终端不会自动激活 base提示符恢复干净。需要进入 base 时手动执行conda activate base即可。我个人反而习惯保留 base 自动激活因为这样命令行里直接就能用 python省得每次手动激活。4. 换国内镜像源让下载速度真正起飞4.1 为什么必须换源Anaconda 默认的软件源在国外直接使用 conda 安装包时下载速度经常让人怀疑人生尤其是一堆依赖包一起拉取的时候。换镜像源不是玄学而是把 conda 下载依赖包的地址指向国内速度快、流量便宜的服务器。这一步做完体感差异非常明显从几百 KB/s 直接跳到几十 MB/s 都很常见。常见的国内镜像源有清华、中科大、阿里。清华的 Anaconda 镜像一直维护得不错我就以它为例。配置方式是编辑~/.condarc文件如果你从来没配置过需要自己新建一个。在终端里执行conda config --set show_channel_urls yes然后打开~/.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写这个文件的时候有一点必须提醒如果用文本编辑器手工编辑直接写就行但如果你用echo重定向的方式在终端里写反斜杠需要转义很容易写错。建议用 nano 或 vim 打开文件慢慢写省得折腾。改完源之后执行一下conda clean -i -y这个-i参数是清理索引缓存确保后续访问源时重新读取最新的索引文件。之后随便安装一个包测试速度比如conda install cmake -y你会发现下载速度有了质的变化。4.2 顺手把pip源也换了conda 换源解决的是 conda install 的问题但很多情况还是避不开 pip。比如某些包只在 PyPI 发布或者 conda 源里的版本太老。pip 的默认源同样在海外速度不理想所以我会把 pip 的源一起换掉。清华大学的 PyPI 镜像地址是https://pypi.tuna.tsinghua.edu.cn/simple用一条命令配置全局生效pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple配置后会写入~/.config/pip/pip.conf之后所有 pip install 都走清华镜像。这个操作在整个 Python 开发中会一直受益不只是针对 Anaconda。4.3 换源后一个容易踩的坑换完 conda 源之后如果安装某些冷门包时报PackagesNotFoundError别慌这通常不是源的问题而是这个包本身在 defaults 源里没有只存在 conda-forge 这个社区源里。解决方案是在命令行显式指定源安装conda install -c conda-forge 包名上面的.condarc配置里已经把 conda-forge 映射到了清华的 cloud 路径下所以-c conda-forge也会走国内加速速度不会受影响。踩过这个坑之后我才反应过来镜像源配置做得是否完整直接决定了后续 conda-forge 的安装体验。5. 创建虚拟环境Python多版本管理的关键动作5.1 为什么不能用base环境一路走到黑很多新手装上 Anaconda 之后直接在 base 环境里 pip 这个、pip 那个用着用着发现环境乱了。base 环境一旦被搞脏恢复成本很高。我自己的习惯是base 环境尽量保持干净所有实际项目都放到独立的虚拟环境里。打个比方base 环境就像你书房里的总工具箱里面的螺丝刀扳手是通用的。但你不会拿同一把改锥去拆手表和拆汽车的发动机。每个项目单独建一个环境相当于每个项目有自己的工具箱项目间的依赖互不干扰这才是 conda 虚拟环境的核心价值。5.2 创建、激活、退出、删除一条龙创建虚拟环境的基本命令conda create -n pytorch python3.11 -y这里的-n pytorch是给环境起名叫 pytorchpython3.11指定环境的 Python 版本。conda 会自动下载 Python 3.11 解释器和最基础的工具不需要动系统 Python。-y参数是跳过确认提示实际执行时加上可以省一个回车。激活环境conda activate pytorch此时终端提示符前面会变成(pytorch)用python --version可以确认当前解释器确实是这个环境里的。退出环境conda deactivate删除一个不再用的环境conda remove -n pytorch --all查看当前有哪些环境conda env list这里面最值得注意的一点是conda create -n env_name pythonx.x背后的下载机制。conda 会去软件源里拉取指定版本的 Python 以及 pip、setuptools 等基础包整个环境在你跑conda activate的那一刻就已经自洽了不需要你手动去系统里翻 Python 路径。5.3 环境导出与复现做项目时有个好习惯把自己的环境依赖导出成一个文件方便在另一台机器上一键复现。导出命令conda env export environment.yml这个文件记录了当前环境的名称、channel、所有包的具体版本。换一台新机器只需要conda env create -f environment.yml就能把环境原样复原。这里有个小坑conda env export导出的文件包含一些内部构建信息如果换到不同平台或不同 conda 版本有时会提示找不到某些包。建议只在自己熟悉的机器间迁移时使用如果要发布项目给别人最好还是用pip freeze requirements.txt导出 Python 层依赖配合 Python 版本说明一起用。6. 与PyCharm联动搭建能跑PyTorch的开发环境6.1 用conda环境跑一个PyTorch的真实例子装了 Anaconda 不是为了看着玩的。我们直接建一个 PyTorch 环境把整套流程走一遍。先创建环境conda create -n pytorch python3.11 -y conda activate pytorchPyTorch 官方提供的 conda 安装命令如下conda install pytorch torchvision torchaudio pytorch-cuda12.1 -c pytorch -c nvidia这个命令会从 pytorch 和 nvidia 官方频道拉取安装包但前提是你用的机器有 NVIDIA 显卡并且安装了驱动。如果没有独显或者暂时不打算用 GPU直接用 CPU 版本更方便pip install torch torchvision torchaudio因为 pip 源已经换到清华CPU 版 PyTorch 的下载速度相当快装完测试python -c import torch; print(torch.__version__)能输出版本号就说明环境可用了。这个流程验证的就一件事虚拟环境创建没问题conda 和 pip 都能在这个环境下正常装包跑代码时 Python 解释器找得对。6.2 PyCharm里怎么选解释器PyCharm 和 Anaconda 的联动其实很简单。打开 PyCharm新建项目或打开已有项目进入Settings-Project-Python Interpreter点右上角的齿轮选择Add Interpreter再选Add Local Interpreter。这里要注意弹出的窗口里有几种解释器类型我们要选的是Conda Environment。随后有一个选项是Existing environment点击右侧的...按钮找到你这个 conda 环境里的 Python 解释器路径。一般来说路径长这样/home/你的用户名/anaconda3/envs/pytorch/bin/python选完之后PyCharm 的项目解释器就指向了 pytorch 环境。你在 PyCharm 里新建 Python 文件、Run 代码用的都是这个环境里的解释器和依赖包。以后在终端里用conda activate pytorch再跑同一个项目两者用的是同一套环境不会出现“终端能跑、PyCharm 报错”的情况。6.3 一个小坑PyCharm的Terminal里conda不可用很常见的一个问题PyCharm 自带的 Terminal 窗口里输入 conda 提示command not found。原因很简单PyCharm 的 Terminal 启动时加载的 shell 配置文件未必和系统终端一样。解决办法是在系统终端里确认已经执行过conda init bash并且在 PyCharm 的Settings-Tools-Terminal里确认 Shell path 指向的是/bin/bash或你的默认 shell 的绝对路径。改完重开一个 Terminal 标签页即可。7. 卸载、重装与救回错乱的环境变量7.1 Anaconda卸载要怎么卸干净卸载 Anaconda 这件事很多人直接rm -rf ~/anaconda3就完事了结果发现终端提示符还带着(base)因为.bashrc里的 conda 初始化代码还在。正确卸载分两步走。第一步是用 conda 自带的反向 init 命令把写在 shell 配置里的初始化代码移除conda init --reverse --all第二步再删除安装目录rm -rf ~/anaconda3同时建议清理一下相关配置和缓存rm -rf ~/.condarc ~/.conda ~/.cache/pip--reverse参数加上之后conda 会把自己之前写入的所有 shell 配置都清理掉。这样再开新终端就不会有(base)提示符了。如果你曾经手动往.bashrc里加过export PATH...anaconda3/bin...那还需要手动删掉那一行因为这种手动修改 conda 自己管不到。7.2 误改环境变量导致命令全失效怎么救Ubuntu 下改环境变量翻车是高频事故。最常见的是在.bashrc里写了类似export PATH/some/wrong/path然后执行source ~/.bashrc结果ls、vim、sudo全部提示command not found因为 PATH 被你覆盖了。这时候不要慌也不要马上重装系统还有救。解法是使用系统的绝对路径去执行命令。Ubuntu 的vim一般装在/usr/bin/vimnano在/usr/bin/nanogedit在/usr/bin/gedit。通过绝对路径打开配置文件/usr/bin/vim ~/.bashrc改掉错误的那一行然后重新加载source ~/.bashrc如果想临时恢复大部分命令还可以先手动导出一个标准可用的 PATHexport PATH/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin这样当前终端就能正常使用命令了但真的修复还是要靠改文件。这个技巧属于 Linux 运维的基本功我个人已经靠它救回过好几次手滑的现场值得记下来。7.3 重装时怎么保住已有环境如果你要重装 Anaconda又不想损失之前辛苦创建的一堆虚拟环境重装之前一定把~/anaconda3/envs整个目录备份下来cp -r ~/anaconda3/envs /path/to/backup/envs新装好 Anaconda 之后把备份的 envs 目录放回去cp -r /path/to/backup/envs ~/anaconda3/不过这样做有一个隐患如果旧环境的 conda 和新 Anaconda 自带版本存在不兼容某些包的元数据可能对不上。稳妥的做法是提前在每个环境用conda env export导出 yml 文件重装后用conda env create -f重建环境。备份 envs 目录适合快速恢复export/import 适合长期稳定两种方式根据情况选。8. 常见问题速查表与排错思路问题现象常见原因解决办法输入 conda 提示 command not found.bashrc中 conda 初始化代码缺失或未 source执行source ~/.bashrc或运行/home/用户名/anaconda3/bin/conda init bash重新初始化安装包时卡在 Solving environmentconda 版本过旧或软件源索引异常conda update -n base conda -y或conda clean -i -y清理索引缓存下载速度极慢默认源在海外按上文配置清华镜像源并配置 pip 使用国内 PyPI 镜像终端打开自动进入(base)但不想进auto_activate_base 默认开启执行conda config --set auto_activate_base falseconda activate 提示 CommandNotFoundError没有用 conda init 初始化 shell运行conda init bash然后source ~/.bashrczsh 用户运行conda init zsh启动Python时出现Warning: This Python interpreter is in a conda environment...当前 shell 没有激活 conda 环境但解释器路径指向了某个环境先conda activate 环境名再运行 python或在 IDE 中确认解释器路径是否选对pip install 提示 externally-managed-environment系统 Python 启用了 PEP 668 限制不要在系统 Python 里直接 pip 装包改用 conda 虚拟环境里的 pip安装 Anaconda 后系统其他程序找不到模块默认 Python 被替换为 Anaconda 的 Python尽量使用 conda 创建的独立环境避免在 base 里大量装包污染系统依赖这里单独说一下那个Warning: This Python interpreter is in a conda environment...这个提示在 PyCharm 里特别常见。你在 PyCharm 里选了一个 conda 环境的解释器但 PyCharm 的 Terminal 没有激活对应环境或者你在系统终端里直接敲了某个环境下的 python就会触发这个提示。解决方法很简单要么先激活环境再启动 python要么在 PyCharm 的项目解释器设置里确认路径正确并勾选关联环境。这不是什么致命错误但经常让初学者误以为环境坏了。还有一个经验之谈conda install长时间卡住时不要反复 CtrlC 然后重试。先等两分钟如果确实卡死了用conda clean -i -y清缓存再换一个 channel 试试比如conda install 包名 -c conda-forgeconda-forge 虽然包多但依赖解析有时更慢不要盲目把 conda-forge 设为默认第一源否则每次解析依赖都会变慢。另外如果你发现 pip 安装的包在项目里导入失败很可能是 pip 装到了别的 Python 环境里。检查一下当前环境which pip pip --version输出里应该指向/home/你的用户名/anaconda3/envs/你的环境名/bin/pip如果指向/usr/bin/pip说明你正在用系统 pip命令前没有激活 conda 环境。这个检查能排除掉一半左右的诡异问题。根据我个人经验Ubuntu 上安装 Anaconda 最顺手的节奏是先uname -m确认架构再通过镜像源下载安装脚本安装时接受默认路径和 conda init装完立刻换源然后创建独立虚拟环境干活。这套流程熟练之后十分钟内就能让一台新机器进入可交付状态。踩过几次坑之后你会明白多数问题不是 Anaconda 的问题而是环境变量和 shell 配置的问题顺着我们前面讲的那几个关键动作排查基本都能解决。最后再分享一个我自己的习惯新环境建好之后先在环境里跑一条python -V和pip -V确认解释器和 pip 都在预期位置后面写代码会省掉非常多的排查时间。