news 2026/9/19 13:31:17

Ubuntu 下 Anaconda 安装与 conda init 避坑指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Ubuntu 下 Anaconda 安装与 conda init 避坑指南

1. 为什么 Ubuntu 下装 Anaconda 这件事值得单独写一篇

在 Ubuntu 上装 Anaconda,表面上看就是下载一个.sh文件、跑一条命令、一路回车的事。但我见过太多人卡在几个非常具体的地方:装完之后终端前面多了一个(base),每次开终端都自动激活,看着烦;conda activate xxxCommandNotFoundError: 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/pandas
Miniconda约 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版本,选错了装不上。

在服务器上没图形界面,用wgetcurl直接拉:

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 python

which 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) user@host:~$。想关掉:

conda config --set auto_activate_base false

执行完重开终端,(base)就没了。需要时手动conda activate base或激活别的环境。

这个设置写在~/.condarc文件里。你可以cat ~/.condarc看看,里面就是一行auto_activate_base: false

5.3 已经装乱了怎么干净恢复

如果你之前用sudo装过、或者手动往.bashrc里加过 PATH、或者装了两个版本,环境会很乱。恢复步骤:

  1. 打开~/.bashrc,删掉所有和 conda/anaconda 相关的行,包括conda initialize那个块和手动加的export PATH=...anaconda3/bin...
  2. 删掉安装目录:rm -rf ~/anaconda3(确认路径没错再删)。
  3. 删掉配置:rm -f ~/.condarc ~/.conda
  4. 重开终端,which python应该回到/usr/bin/python3
  5. 按第 3、4 节重新装一遍。

注意:rm -rf之前一定ls确认目录内容,别把家目录删了。这种低级错误每年都有人犯。

6. 换源:不换源你会在下载包时怀疑人生

6.1 为什么要换源

conda 默认从官方源下载包,国内访问速度经常只有几十 KB/s,装个 pytorch 能等到天亮。换成国内镜像源,速度能到几 MB/s 甚至十几 MB/s。

6.2 换源的正确姿势

不要一条条conda config --add channels手动加,容易加乱顺序。直接编辑~/.condarc

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

6.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 装的就用 conda,conda 没有的再用 pip,并且尽量先 conda 后 pip,别反过来。

7. 建环境、迁移目录与卸载:长期使用的三件事

7.1 为什么一定要用虚拟环境

base 环境是 conda 自己的"系统环境",不要往 base 里装项目依赖。原因很简单:项目 A 要 numpy 1.20,项目 B 要 numpy 1.26,装一起必冲突。每个项目一个独立环境,互不干扰。

建环境:

conda create -n myproject python=3.9 conda activate myproject

-n后面是环境名,python=3.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-cuda=11.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 ca='conda activate',敲起来快很多。以及conda env export --no-builds > environment.yml导出的环境文件跨平台兼容性更好,换机器重建环境时少踩坑。

Anaconda 这东西,装本身不难,难的是理解它和系统 Python 的边界、理解 conda 的初始化机制。把这两点搞明白,后面用起来就顺了。真遇到报错,先看报错信息里让你run 'conda init'还是command not found,对症下药,基本都能自己解决。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/19 13:27:38

数据分析师笔试题解析:异常值、聚类、SQL与AB测试实战

简介&#xff1a;这份《数据分析笔试题》PDF是一份面向数据分析师求职与技能自测的练习资料&#xff0c;内容取自互联网公司真实笔试场景&#xff0c;涵盖统计学基础、异常值识别、聚类分析、SQL取数与销售数据解读等核心模块。资源以经典例题带动知识点讲解&#xff0c;例如Gr…

作者头像 李华
网站建设 2026/9/19 13:24:11

Claude Code 月耗 1199 美元的 token 账单,TaoToken 能看清哪几笔

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/19 13:23:43

历史观看数据驱动营销:从用户分群到会员转化的实战指南

做营销这几年&#xff0c;我越来越觉得&#xff0c;手里没点真实行为数据&#xff0c;光靠拍脑袋定方向&#xff0c;翻车概率太高了。今天想聊的是我们团队在“7v7.7cc”这个内容平台上完整跑过的一个方向&#xff1a;把历史观看数据当成营销策略的底层燃料&#xff0c;从用户分…

作者头像 李华