☰
Ubuntu 20.04 安装Anaconda全攻略:环境隔离与 conda 配置实践
2026/9/30 1:24:03 网站建设 项目流程

作为一个常年跟 Python 环境打交道的人,我每次换了电脑或者接到一台新服务器,干的第一件正经事基本都是同一个:装 Anaconda。别笑,这个动作看似基础,实际上决定了后面所有项目能不能顺利进行。Ubuntu 20.04 是很多云服务器、教学机器和 WSL 用户默认使用的发行版,配合 Anaconda 搭建 Python 环境,基本是目前数据科学工作流里最通用的起点。这篇文章就是一套我在 Ubuntu 20.04 上完整安装并配置 Anaconda 的流程记录,包括下载校验、安装选项、源切换、虚拟环境使用,以及我实际踩过的坑和排查方法,新手可以照着一步步做,有一定基础的朋友也能从中找到几个以前忽略掉的细节。

我不会在这里灌什么理论,直接说结论:装好之后,你会得到一个独立的 Python 工具链,一套像 conda 这样能够方便创建环境、切换版本、安装预编译库的包管理工具,以及后续跑 PyTorch、TensorFlow、OpenCV、Jupyter 这些重型工具时的稳定基础。这篇文章适合刚入手 Ubuntu、准备开始学习数据科学或机器学习的人,也适合像我一样懒得每次都在环境问题上花时间的“老油条”。下面开始。

1. 项目背景:为什么我先说“环境隔离”,再说“安装步骤”

很多新手第一次装 Anaconda 之前,最大的疑问是:系统里明明已经有 Python 了,为什么还要装一套新的?这个问题如果不搞清楚,后面很多配置步骤你会觉得莫名其妙。

Ubuntu 20.04 系统自带的 Python 3.8 是给操作系统用的,apt 包管理、系统服务、部分 GUI 工具都依赖它。如果你直接往系统 Python 里 pip install 一堆包,一旦某个包升级后破坏了系统依赖,后果轻则软件起不来,重则 apt 都被搞坏。我就见过同事在系统 Python 里装了新版 setuptools,然后整个 apt 提示 Python 版本错误,最后只能靠恢复备份解决问题。

Anaconda 的解决思路是“各玩各的”:它把 Python 解释器、包管理器、常用库全部装进一个独立目录,默认情况下不碰系统 Python,也不会用 sudo 权限去动系统文件。与此同时,conda 可以在不影响 base 环境的前提下,创建若干个互相隔离的虚拟环境。比如你同时要跑 Python 3.7 的旧项目和 Python 3.11 的新项目,在 conda 里就是两个环境的事,切换起来一条命令。

还有一个很现实的理由:conda 对预编译库的处理比 pip 友好得多。像 numpy、scipy、pandas 这种带 C 扩展的库,pip 经常要现场编译,编译失败后报错一长串;conda 直接从仓库拉编译好的二进制包,省心不少。PyTorch 在 conda 里安装也特别方便,这也是大量机器学习教程默认用 conda 的原因。

1.1 Anaconda 与 Miniconda、系统 Python 怎么选

我平时被问得最多的问题就是这个。三者的关系很简单:Miniconda 是精简版的 Anaconda,只带 conda、Python 和一个最小的包集合,Anaconda 则额外预装了两百多个常用科学计算和数据分析包。系统 Python 则是什么都没装,也不建议装太多东西。

方案体积预装包适用场景
系统 Python很小无系统脚本、最轻量需求
Miniconda约 80MB极少容器、CI、磁盘紧张、希望环境最干净
Anaconda约 3GB+250+ 个常用包本地开发、教学、机器学习、数据分析

按照这个标题的场景,我们走的是完整的 Anaconda 安装,毕竟标题就叫 Anaconda 环境。但你在实际项目中如果只想用 conda 的管理能力,完全可以用 Miniconda,后续操作基本一致。

1.2 安装前必须确认两件事

第一,Ubuntu 20.04 是 64 位系统,但你得确认 CPU 架构。绝大多数电脑和云服务器是 x86_64,但一些 ARM 云主机和树莓派要选 aarch64 的安装包。打开终端执行:

uname -m

输出x86_64就下载 x86_64 版本,输出aarch64就下载 ARM 版本。别看了标题是 Ubuntu 20.04 就无脑下 x86_64,这个错误我在 ARM 设备上犯过。

第二,确认磁盘空间。Anaconda 完整安装大概需要 3GB 可用空间,如果还要创建项目环境,建议至少留出 10GB。安装目录默认放在你的用户主目录,也就是~/anaconda3,如果你的主目录在系统盘且空间紧张,后面我会讲怎么改安装路径。

2. 下载安装包与完整性校验,别省这一步

下载渠道我一般有两个:官方源和清华镜像。官方地址是https://www.anaconda.com/download,不过国内访问速度经常不稳定,几百 MB 的安装包断断续续下到一半会很让人崩溃。清华开源软件镜像站提供了完整的 Anaconda 安装包存档,下载速度稳定得多,地址格式类似:

https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2023.09-0-Linux-x86_64.sh

注意,版本号会持续更新,你需要根据当前可用的最新版本替换中间的版本号。我习惯先用浏览器打开镜像站的 archive 目录,看一眼最新的文件名,再复制到终端下载。

2.1 用 wget 下载并支持断点续传

下载建议用 wget,遇到网络闪断可以继续下载,不用从头再来:

wget -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2023.09-0-Linux-x86_64.sh

选项-c表示断点续传。如果下载目录不在当前目录,记得先 cd 到你想放安装包的目录,或者写绝对路径。

2.2 SHA256 校验:为了保证安装包没损坏也没被篡改

这一步很多人跳过,但我强烈建议做。安装包在传输过程中可能损坏,一旦安装包坏了,安装到一半报错,你很难判断是安装问题还是包的问题。更严重的是,互联网上容易搜到各种来路不明的 Anaconda 安装包来源,如果被人动过手脚,安装后你所有的 Python 项目都在别人的监视之下。

先看官方或镜像站给出的 SHA256 校验值,然后在安装包所在目录执行:

sha256sum Anaconda3-2023.09-0-Linux-x86_64.sh

把输出的 64 位十六进制字符串和官网上给出的值对比,完全一致再继续。如果对不上,重新下载。这套流程核心就一句话:验证文件完整性和真实性,是环境搭建的前提。

另外,如果你的网络环境可以从官方源直接下载,优先在官网页面找对应架构的安装包,鼠标右键复制链接后在终端下载,会更稳一些。

3. 安装过程实录与 conda init 的底层逻辑

下载完成并校验通过后,开始安装。在安装包所在目录执行:

bash Anaconda3-2023.09-0-Linux-x86_64.sh

安装向导是纯文本交互界面,过程不复杂,但有几个坑需要提前了解。

3.1 安装界面每一步都选什么

第一步会显示一段很长的协议文本,让你按 Enter 继续浏览。这里不需要逐字读完,直接按几次 Enter 翻到最底部,输入yes表示接受协议。

第二步问安装目录。默认是~/anaconda3,直接按 Enter 即可。如果你想把 Anaconda 放到其他位置,比如/data/anaconda3或者/opt/anaconda3,就在这里输入绝对路径。不过我一般建议普通用户装在默认目录,后面减少权限问题。如果你确实要装在/opt下,请先确认该目录你自己拥有写权限,或者安装完再调整属主,否则 conda 在自己的目录里写缓存都会报 Permission denied。

第三步是最关键的一个问题:

Do you wish the installer to initialize Anaconda3 by running conda init?

这里我建议输入yes。conda init做的事情是往~/.bashrc里写入一段 conda 初始化代码,这样每次打开新终端,conda 命令才能被识别,base 环境也会默认激活。输入no也可以,但之后你需要手动配置环境变量,新手很容易卡在conda: command not found。

等待安装脚本跑完后,执行:

source ~/.bashrc

让刚写入的配置生效。然后验证:

conda --version which python which pip

正常情况下,conda --version会输出 conda 的版本号,which python会指向~/anaconda3/bin/python,which pip指向~/anaconda3/bin/pip。如果连续几个命令都正常,说明安装基本成功了。

3.2 conda init 到底改了什么

理解conda init做了什么,对后续排查问题非常关键。打开~/.bashrc,你会看到一段由# >>> conda initialize >>>和# <<< conda initialize <<<包裹的代码块。它的作用是找到 conda 的安装位置,然后加载一个叫conda.sh的脚本:

# >>> 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 <<<

如果你在安装时选择了no,或者因为某些原因想重新执行初始化,不用去手写这些内容,直接运行完整的 conda 路径:

~/anaconda3/bin/conda init bash

这个命令会自动为你把上面的代码块写入~/.bashrc。多次执行也不会产生逻辑混乱,因为 conda init 会识别并替换旧的块。但如果某天你手动把这段内容打乱了,那就要小心了,后面第 7 章我会详细说。

3.3 刚装完就关掉 base 自动激活

安装完成后你会发现,每打开一个新终端,命令行提示符前面会出现(base)。这是因为 conda 默认自动激活 base 环境。这在刚开始时可能没什么感觉,但时间长了,你会发现终端启动慢、提示符复杂,而且每次写脚本都要考虑是不是在 base 环境里。

我自己装完 Anaconda 的第一件事,通常是关闭 base 自动激活:

conda config --set auto_activate_base false

执行后会修改~/.condarc文件,之后打开新终端不会自动进入 base 环境,想用 conda 时手动执行conda activate即可。这样既保留了 conda 功能,又避免了 base 环境对你日常操作的干扰。

4. 安装完成后第一件事:配置国内镜像源

如果你是在国内网络环境安装,这一步几乎必须做。conda 默认使用官方仓库,下载包的速度非常慢,尤其是在创建新环境或者安装机器学习库的时候,动辄下载几百 MB,等得人想砸电脑。

配置国内源的方法很简单,我用的是清华源。直接编辑~/.condarc文件,或者用 conda config 命令写入。推荐直接写文件,便于一次性管理:

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 -i

清理索引缓存,然后测试一下:

conda search numpy

如果能快速返回结果列表,说明源配置成功。之前我遇到过配置后 conda 命令报错,多半是 YAML 格式不对,或者源地址拼写错误,检查一下有没有多余空格即可。

4.1 pip 源也顺手换掉

conda 源解决的是 conda 安装包的速度,但有些包 conda 仓库里没有,或者版本太旧,我还是会用 pip 来装。这时候 pip 默认的官方源同样慢,所以建议顺手配置:

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

这条命令会在~/.config/pip/pip.conf里写入配置,之后执行 pip install 就会走清华 PyPI 镜像。注意,pip 配置如果写在 conda 环境外,对所有环境都会生效,这一点很方便,不用每个环境单独设置。

4.2 换完源后依然慢是怎么回事

如果你配置了镜像源,下载速度还是像蜗牛一样,先检查一下是不是在创建环境时指定了其他额外频道。比如有人会在命令行里写:

conda create -n demo python=3.9 -c conda-forge

这个-c conda-forge会强制从 conda-forge 官方源下载,跟你~/.condarc里的配置是两回事。解决办法是不要在命令行手动指定-c,让 conda 按配置文件里的自定义 channel 走。另外,检查一下 DNS 和防火墙设置,镜像站偶尔也会出现故障,遇到问题可以换中科大源、阿里源交叉验证。

5. 环境隔离实操:创建、激活、导出与删除

Anaconda 装好后,最核心的使用方式是创建独立的虚拟环境。我见过有人把 Anaconda 装上后从来不创建环境,所有包都装在 base 里,结果两三个项目互相冲突,最后只能重装系统。这其实绕过了 Anaconda 最大的价值。

5.1 创建 Python 3.10 项目环境

创建新环境的命令格式是:

conda create -n 环境名 python=版本号

比如我想创建一个跑机器学习项目用的环境,名字叫 ml,Python 用 3.10:

conda create -n ml python=3.10

命令执行后,conda 会搜索该 Python 版本及其依赖,展示一个计划列表,让你输入y确认。安装完成后,激活这个环境:

conda activate ml

注意观察终端提示符,变成(ml) 用户名@主机名就表示已经进入了 ml 环境。这时再执行python --version,看到的应该是 Python 3.10.x,和 base 或者系统 Python 都不一样,两个环境互不影响。

5.2 环境基本操作速查

我整理了一份最常见操作对照表,方便查:

操作命令
列出所有环境conda env list
创建指定 Python 版本环境conda create -n name python=3.9
激活环境conda activate name
退出当前环境conda deactivate
复制一个环境conda create -n name-copy --clone name
删除环境conda remove -n name --all
安装包conda install numpy
安装指定版本包conda install numpy=1.24.0
查看当前环境包列表conda list

这些命令熟练掌握后,环境管理基本上不会再有阻碍。这里有个我自己坚持的习惯:环境名一定和项目名对应,比如项目叫 yolo_detect,环境名就叫 yolo_detect。时间长了,环境一多,如果随便起叫 test、env1 这种名字,过两周你就分不清谁是谁了。

5.3 环境导出与复现,多台机器部署不头疼

conda 最适合团队协作的功能之一,是环境导出。当你的项目在 A 机器上调试好,要在 B 机器或服务器上复现时,一条命令就能搞定:

conda env export > environment.yml

新机器上执行:

conda env create -f environment.yml

这样 B 机器会创建一个和 A 机器一模一样的环境。如果你的项目比较简单,依赖不多,也可以用:

pip freeze > requirements.txt

然后在另一个环境里执行pip install -r requirements.txt。两者的差别是:conda env export会记录 conda 的渠道、构建版本,更精确但也更啰嗦;pip freeze只记录 pip 包名字和版本,简洁一些。我自己是如果项目主要在 conda 里管理,就用 environment.yml;如果有些包只能从 pip 装,就两份文件都保留,先 conda 后 pip。

6. 与 PyCharm、VS Code 和 Jupyter 的集成

Anaconda 装好了、环境也建好了,接下来必然要和你的编辑器或开发工具配合。这一步如果配不对,经常出现“明明在终端激活了环境,编辑器里 import 的却是另一个 Python”的问题。

6.1 PyCharm 里绑定 conda 环境

PyCharm 打开项目后,依次进入 File -> Settings -> Project: 项目名 -> Python Interpreter。点击右上角的齿轮,选 Add Interpreter -> Add Local Interpreter,然后选择 Conda Environment。

如果已经手动建好了环境,选 Existing environment,在 Interpreter 路径里找到/home/用户名/anaconda3/envs/ml/bin/python。如果还没建,可以在 New environment 里直接指定 conda 和 Python 版本,让 PyCharm 替你调用 conda 创建。确认后,PyCharm 的终端也会自动使用当前环境,非常方便。

这里有个小坑:PyCharm 加载 conda 环境时,需要 PyCharm 能读取到 conda 可执行文件。如果你是默认路径安装,通常自动识别;如果是自定义路径安装,需要在 Conda executable 里手动指定,比如/data/anaconda3/bin/conda。

6.2 VS Code 选择解释器

VS Code 相对更轻量。安装 Python 扩展后,按Ctrl+Shift+P,输入Python: Select Interpreter,在列表里找到ml环境对应的 Python,选中即可。之后打开终端,VS Code 会自动激活该环境。

如果列表里没有 conda 环境,检查一下 VS Code 的 python.condaPath 设置是否指向了正确的 conda 路径,或者重启 VS Code 让扩展重新扫描。

6.3 Jupyter Notebook 中注册 conda 环境

很多人想用 Jupyter,但新建 notebook 时发现 interpreter 只有 Python 3,没有自己的 ml 环境。这是因为 Jupyter 默认只显示内核所在的环境,需要在 ml 环境里注册内核。

conda activate ml conda install jupyter ipykernel python -m ipykernel install --user --name ml --display-name "Python 3.10 (ml)"

执行完后,再打开 Jupyter,新建 notebook 时下拉框里就会出现Python 3.10 (ml)。选它,notebook 就运行在 ml 环境里了。--display-name是显示给用户看的名称,可以随意取;--name是内核的技术名称,建议跟环境名一致,方便以后删除不用的内核:jupyter kernelspec uninstall ml。

7. 实战排查:我在这套流程里踩过的坑

安装 Anaconda 这件事本身不难,难的是安装完以后出了问题不知道怎么排。我把这几年实际遇到的典型问题整理成一份排查速查表,供你参考。

7.1 command not found: conda

这是最常见的报错。现象是终端执行conda --version,提示找不到命令。原因一般有三种:

第一种,安装时选择了no,没有执行 conda init。解决办法是手动执行~/anaconda3/bin/conda init bash,或者把~/anaconda3/bin加入 PATH。

第二种,执行了 conda init,但当前终端会话没有重新加载配置文件。执行source ~/.bashrc即可。如果是在 bash 之外的环境,比如 zsh,需要conda init zsh。

第三种,~/.bashrc里的 conda 初始化块在编辑时被误删了。重新执行conda init bash即可。记住 conda 自身有重写能力,不需要你手工拼 PATH,直接用 init 命令修复最稳。

7.2 多次初始化导致 .bashrc 出现重复块

我之前图省事,遇到 conda command not found 就再敲一次 conda init bash,后来打开 .bashrc 发现两个 conda initialize 块。虽然 conda init 本身会替换管理块,但如果你把旧的块手动改乱过,很可能生成两个互不相同的块,最终导致终端启动报错或 conda 命令奇奇怪怪。

解决办法是手动打开~/.bashrc,找到所有# >>> conda initialize >>>之间的内容,只保留最新一份,其余删掉。然后source ~/.bashrc,再看conda --version是否正常。

7.3 安装时用了 sudo,结果到处是权限问题

Anaconda 官方安装脚本允许你用 sudo 运行,但我不建议。用 sudo 安装到 root 的目录或其他系统目录,后面创建环境、写缓存时,普通用户没有权限,报错一堆。比如:

PermissionError: [Errno 13] Permission denied: '/root/anaconda3/pkgs/cache'

你可能会把目录 chmod 777 强行解决,但这会引入更多安全问题。

正确做法是:始终用普通用户安装,文件目录归该用户所有。如果已经用 sudo 装错了,最简单的办法是删掉重装在当前用户的目录下,成本比去慢慢修改权限低得多。

7.4 CondaHTTPError 或 SSL 证书相关报错

配置国内源之后,偶尔遇到 CondaHTTPError 或证书验证错误。常见原因是~/.condarc里配置了旧的、已失效的镜像地址,或者配置文件格式有问题。

常见的解决步骤:

conda clean -i conda config --show channels

先看当前 channels 配置是否正常。如果发现地址不对,直接把~/.condarc里的频道列表清空,再用标准方式重新配置:

conda config --remove-key channels conda config --add channels conda-forge

如果问题仍在,可以临时用官方源测试一下:

conda search numpy --override-channels -c defaults

如果官方源也不行,那就是网络链路问题,可以换镜像站试试。关键在于学会用--override-channels跳过本地配置定位问题。

7.5 磁盘空间被 pkgs 目录吃满

Anaconda 每安装一个包都会在~/anaconda3/pkgs里缓存下载的安装包。创建的环境多了、安装包大了,pkgs 目录轻松占用十几 GB 是很正常的事。

清理方法:

conda clean --all

这个命令会清除所有缓存的包、索引文件和临时文件。如果你的系统盘空间紧张,还可以把缓存目录挪到其他分区:

conda config --add pkgs_dirs /data/conda_pkgs conda config --add envs_dirs /data/conda_envs

前提是/data目录先创建好,并且当前用户有写权限。目录迁移后,之前的旧缓存需要手工删除。

7.6 系统 Python 和 conda Python 混用

最微妙的问题往往是“双解释器”。你明明在 conda 环境里,但运行pip install时,pip 却指向了系统 Python,或者反过来了。常见的危害是包装错环境,然后 import 的时候找不到模块。

我给的方案非常简单:在 conda 环境里不要裸用pip和python之外的命令,统一用python -m pip install这种方式。因为python -m pip保证了 pip 一定会装到当前 python 所在的环境,不会受 PATH 顺序影响。这个习惯我一直保留,避开了很多环境错乱问题。

7.7 终端启动越来越慢

如果你每次打开终端都要等一两秒,多半是 conda 初始化脚本拖慢了启动速度。尤其是开了非常多的 conda 元数据,或者网络不通时 conda 尝试检查更新,终端卡顿明显。

解决思路有两个:第一,如果你不需要每次打开终端都在 base 环境,执行:

conda config --set auto_activate_base false

可以减少启动时的加载工作量。第二,如果项目明确需要某个环境,就在项目根目录的.bashrc或终端启动配置里手动conda activate ml,让 base 保持空置。

7.8 卸载 Anaconda 的干净办法

万一你要换 Miniconda,或者彻底不想要 Anaconda 了,删除也要干净。直接删目录会留下很多垃圾,终端也可能继续加载 conda 报错。

第一步清理缓存和环境:

conda clean --all

第二步删除主目录:

rm -rf ~/anaconda3

第三步清理配置文件。编辑~/.bashrc,删掉# >>> conda initialize >>>到# <<< conda initialize <<<之间的内容;再删除~/.condarc、~/.conda、~/.continuum这些目录。最后source ~/.bashrc验证 conda 命令已不存在。

如果你把环境创建到了自定义目录,记得一并删除那些 envs 目录。检查命令:

env | grep -i conda

输出为空,基本就清理干净了。

最后我再分享一个坚持了很久的习惯:不管是在公司服务器还是自己笔记本上,我每次创建环境都会让环境名和项目名一一对应,并且把environment.yml或requirements.txt提交到 git 仓库。这样不管是换电脑还是同事协作,都能在最短时间内把运行环境复原,省下大量时间。Anaconda 本身并不复杂,真正复杂的,是拿着一个混乱的环境去解决问题的时候。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询