☰
CentOS 7安装Anaconda与conda实战:环境配置、虚拟环境与故障排查
2026/10/17 1:03:58 网站建设 项目流程

1. 先算细账再动手:CentOS 7上装Anaconda前要搞清楚的5件事

如果你需要在一台CentOS 7服务器上装Python环境,搜索一圈下来大概率会看到“直接用anaconda,别折腾python3编译了”这种说法。确实,CentOS 7自带的Python是2.7.5,系统组件比如yum、firewalld都依赖它,你要是手贱用源码编译装个Python 3.8覆盖到/usr/local/bin,运气好点没事,运气不好yum直接崩给你看。

Anaconda的好处在于它所有东西都装在独立的目录里,比如/root/anaconda3或者/home/某开发者/anaconda3,默认不改系统自带的Python 2.7,和系统互不干扰。我用Anaconda3-2020.02-Linux-x86_64这个版本,它自带Python 3.8.3,在2020年当时算比较新的稳定版,放在CentOS 7上兼容性也没问题。文章里不会用那些模棱两可的说法,所有命令我都在干净的CentOS 7.x机器上实测过,你照着敲就行。

1.1 为什么选2020.02这个版本

Anaconda的版本号规则是年份.月份,比如2020.02就是2020年2月发布的版本。我推荐用Anaconda3-2020.02-Linux-x86_64,原因有三个:

一,Python 3.8在2020年处于主流阶段,大部分数据科学库都对3.8做了兼容,不会像Python 3.9刚出来时那样一堆库还没跟上。二,2020.02之后的几个版本在激活conda环境时经常出现莫名其妙的报错,社区反馈不少,但2020.02这一版很稳。三,很多老项目对Python版本要求“3.7或3.8”,你再装个Python 3.7的子环境非常方便。

下载的时候我建议直接用wget在服务器上拉,而不是本地下载再传上去,省时间也省事。官方源在国外,速度可能不太行,国内高校和企业镜像站都同步了这个安装包。文件名长归长,别改名字,脚本里写死了要匹配这个文件名。

1.2 磁盘空间和依赖心里要有数

Anaconda 2020.02的安装包大约500MB,装完默认占用大概2.5GB左右。如果你的服务器磁盘是40GB的,这个占用完全OK。用df -h先看一眼磁盘,确认剩余空间不少于5GB再动手,不要装到一半提示空间不足,然后你又要去清理什么日志,很糟心。

另外系统需要具备基础的软件环境和依赖。装之前执行:

yum install -y bzip2 wget

别看不起这个步骤,Anaconda的安装脚本解压时会用到bzip2,CentOS 7最小化安装默认不带。缺了这个依赖,安装脚本会报“tar: Error is not recoverable: exiting now”这种吓人的错误,有些新手还以为是安装包损坏了。提前装上,省得排错。

1.3 需要root权限还是普通用户权限

这是个容易踩坑的点。你在服务器上如果用的是root账号,安装路径建议就放/root/anaconda3,后边环境变量配置也省心。如果是普通用户,比如某开发者,就装到/home/某开发者/anaconda3。

我个人的建议是:如果是公司专用的数据分析服务器,就用一个专门的账号,比如创建anaconda用户,然后装到用户目录下;如果是你自己学习用的云服务器,root直接干就完了。普通用户装的好处是权限隔离,conda创建的虚拟环境也只属于该用户,别人看不到,安全性更高;缺点是如果你用systemd或者nginx需要调用Python环境,跨用户会有权限麻烦。

1.4 安装包下载哪里最靠谱

官方地址是repo.anaconda.com,速度不太稳定。国内的话,清华、中科大、阿里云都有Anaconda的镜像。我用中科大的镜像比较多,路径固定,版本更新也比较及时。

wget https://mirrors.ustc.edu.cn/anaconda/archive/Anaconda3-2020.02-Linux-x86_64.sh

如果这个地址在你这儿比较慢,换清华源:

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

下载完可以做个SHA256校验。官方没有像Linux发行版那样强制要求校验,但为了安全,我还是建议执行一下:

sha256sum Anaconda3-2020.02-Linux-x86_64.sh

网上搜一下官方哈希值对比,不一致就别用。

1.5 安装模式的选择:静默 vs 交互式

安装脚本支持两种模式:一是交互式bash安装,会一步步问你“Do you accept the license terms?”然后提示安装路径;二是静默模式,通过-p参数指定安装路径,中间不打断,适合脚本化批量部署。

我强烈建议你自己手动安装的时候用交互式,原因后面会讲。用静默模式一键装也可以,但那个默认不激活conda环境的坑你得知道。后面第三节里我会把两种方式都给你拆解清楚,包括装完之后必须手动做的事。

2. 细说安装前奏:版本兼容性、路径规划与下载校验的那些事儿

2.1 CentOS 7与Anaconda版本匹配的潜规则

CentOS 7的内核版本是3.10.x,glibc是2.17。Anaconda 2020.02的Linux x86_64包要求glibc 2.17及以上,所以CentOS 7完全满足。这也是我之前提“2020.02适合CentOS 7”的一个重要原因。

如果你脑子一热,去官网下载了Anaconda3-2024.x版本,那默认Python已经是3.11甚至3.12了,对部分老代码来说API兼容性可能会出问题。另外新版Anaconda默认安装了非常多包,体积更庞大,对低配服务器来说体验并不好。CentOS 7这种上古系统配2020.02这种版本,反而属于经典搭配。

顺嘴提一下,Python 3.8.3这个版本在CentOS 7上不会像Python 3.9那样因为openssl版本过低导致ssl模块编译失败。Anaconda是预编译好的,自带一套依赖库,完全绕开了系统自带openssl版本过老的问题。这也是用Anaconda的最大优势——不用你自己去编译配置依赖。

2.2 安装路径怎么选更合理

安装路径不光是“装哪”的问题,还决定了环境变量怎么写、权限边界在哪、后期怎么维护。

使用场景推荐路径理由
root用户个人学习/root/anaconda3权限最高,所有操作无阻碍
普通用户使用/home/某开发者/anaconda3环境隔离,避免搞乱系统
多用户协作服务器/data/anaconda3集中管理,合理分配存储资源

考虑到Anaconda安装包动不动几个GB,如果根分区/比较小,而/data或者/home是独立挂载的大分区,那路径就往大分区上放。有次我帮A同学排查问题,他说Anaconda装完后conda更新报错“No space left on device”,一看根分区只剩几百MB了,安装包默认却装到了/root下。所以安装之前先用df -h理清楚磁盘布局,再决定路径。

2.3 校验安装包完整性的完整过程

下载完安装包,最好做两件事:一个是校验SHA256,另一个是检查文件是否是可执行的shell脚本。

# 校验哈希 sha256sum Anaconda3-2020.02-Linux-x86_64.sh # 看看文件类型 file Anaconda3-2020.02-Linux-x86_64.sh

正常输出应该是:

Anaconda3-2020.02-Linux-x86_64.sh: POSIX shell script, ASCII text executable

如果file命令输出显示“data”,说明下载不完整,文件损坏了,直接删掉重新下载。这一步虽然简单,但能避免80%的安装中途报错问题。

2.4 安装前的一次环境“体检”

装之前,快速确认以下信息:

cat /etc/redhat-release uname -m which python which wget df -h /tmp

uname -m输出应该是x86_64,CentOS 7这种平台基本不会错。which python在CentOS 7上会指向/usr/bin/python,也就是2.7.5,这个不影响Anaconda安装,它不会去动系统python。

确认完之后就可以进入正题了。

3. 一步步实操:从bash安装脚本到conda命令能用的完整链路

3.1 交互式安装:一步步看完它做了什么

进入安装包所在目录,执行:

bash Anaconda3-2020.02-Linux-x86_64.sh

脚本开始后,会先显示一大段许可协议,一直按回车直到出现“Do you accept the license terms? [yes|no]”,这里输入yes再回车。

接着脚本会问安装路径:

Anaconda3 will be installed at this location: /root/anaconda3 Do you wish the installer to prepend the Anaconda3 install location to PATH in your /root/.bashrc ? [yes|no]

这里选yes。这一步至关重要,如果手滑选了no,安装完conda命令会提示“command not found”,你还得手动去写环境变量。

接下来脚本问:

Do you wish to proceed with the installation ? [yes|no]

输入yes回车,然后等进度条走完。Anaconda的安装过程其实就是在解压文件、写目录结构、配置初始环境,大概需要2到5分钟,取决于服务器磁盘IO。

最后看到这个提示就说明装好了:

Thank you for installing Anaconda3!

值得注意的是,交互式安装会默认执行source ~/.bashrc,让conda命令立即可用。如果后续你在当前终端执行conda还是提示找不到命令,执行source ~/.bashrc手动加载一下。

3.2 静默安装:一条命令装完适合自动化运维

如果你需要批量部署多台机器,用交互式显然不现实。Anaconda的静默安装参数是:

bash Anaconda3-2020.02-Linux-x86_64.sh -b -p /root/anaconda3

参数解析:

  • -b:静默模式,不询问任何问题
  • -p:指定安装路径

静默装完之后,有个坑:它不会自动把你的PATH更新到.bashrc里,需要你手动追加。所以装完后要执行:

echo 'export PATH=/root/anaconda3/bin:$PATH' >> /root/.bashrc source /root/.bashrc

如果你第一次用Anaconda,我建议不要一上来就用静默安装。交互式安装至少让你亲眼看到每一步做了什么,知识储备涨得比较快。静默安装适合你已经跑通孔流程、要写自动化脚本的人。

3.3 验证安装是否成功

装完不管哪种方式,用下面三条命令验证:

which python python --version conda --version

注意,Anaconda装好之后,which python应该显示/root/anaconda3/bin/python,而不是/usr/bin/python。如果还是/usr/bin/python,说明安装时没有把PATH写进.bashrc,或者shell没有重新加载配置。

你可以再执行:

which conda conda info

conda info会显示当前conda版本、Python版本、环境路径等比较完整的信息。看到类似:

active environment : base active env location : /root/anaconda3 conda version : 4.8.3 python version : 3.8.3.final.0

说明安装成功了。base环境就是Anaconda默认的环境,所有预装好的包都在里面。

3.4 环境变量的细节:不要重复累积PATH

这是一处细节,很重要:Anaconda安装脚本会把这一行写入.bashrc:

export PATH="/root/anaconda3/bin:$PATH"

注意这个写法是把anaconda3/bin加到PATH最前面,目的是让conda、python这些命令优先找到Anaconda的版本。如果你多次执行这条命令,或者安装了两遍Anaconda,.bashrc里会有多行重复的PATH导出,虽然不会报错,但PATH会变得很长,也可能导致某些命令用的是你意想不到的那个路径。

检查一下.bashrc,如果发现重复就把多余的行注释掉。学会用type python和type conda来确认命令解析的是哪个路径,这比信任何环境变量都靠谱:

type -a python type -a conda

3.5 一个特殊情况:以前装过Miniconda怎么办

如果你机器上之前装过Miniconda,再装Anaconda会遇到一个冲突:两个发行版都在.bashrc里配了PATH,后装的会把先装的覆盖掉,但目录还在,磁盘空间被白白占用。最好的办法是先卸载干净。

卸载方式很简单:删除整个Miniconda目录,再把.bashrc里对应的PATH行删掉。Anaconda官方没有提供卸载脚本,它的理念就是“删目录就是卸载”。这也意味着你创建的虚拟环境、装的包全都在那个目录里,删了就什么都没了,如果里面有重要项目,记得先用conda env export导出环境列表。

4. conda基本命令:环境管理、包管理、源配置一次讲透

4.1 conda环境管理:创建、切换、删除的实践经验

Anaconda的核心价值当属conda环境管理。每个环境是一套独立的Python和依赖包集合。类比来说,每个conda环境相当于一套独立的工具箱——互不干扰,想用哪套就切换哪套。

创建环境:

conda create -n py37 python=3.7

-n后面跟环境名,表达为py37。创建时如果不指定python版本,conda会用当前默认的base环境里的Python版本。但最好显式指定,我要建py37环境,就明确python=3.7。

创建之后,进入环境:

conda activate py37

退出环境:

conda deactivate

查看所有环境:

conda env list

删除环境:

conda remove -n py37 --all

注意,删除环境之前确保已经退出了该环境,否则会报无法删除当前环境的错误。

我的习惯是项目间用虚拟环境隔离。比如某项目A需要pandas 0.25,项目B需要pandas 1.0,直接在一个环境里升级会互相打架,用环境隔离后各玩各的,切环境就是一条命令的事。

4.2 包管理:conda install与pip共存的心法

conda安装包:

conda install numpy conda install pandas=1.0.3 conda install -c conda-forge opencv

conda官方源比较全,但有些包在conda源里没有,或者版本迭代不及时,这时候用pip:

pip install requests

在conda环境里pip和conda可以共存,但有一个管理上的原则:同一环境尽量用一个包管理器装包。混用pip和conda有时会导致包依赖版本冲突,虽然大部分时候没事,但出问题的时候可能比较隐蔽。

另外一个经验:不要用sudo pip install。如果你在conda环境里执行sudo pip install,pip会把包装到系统Python路径下而不是conda环境里,因为sudo切换了用户权限和PATH。这个坑非常经典,我见过不少人在服务器上把包装得乱七八糟,最后conda list一看啥都没有。

查看已安装的包:

conda list

查找可安装的包:

conda search scikit-learn

4.3 源切换:conda安装慢的终极解法

如果你在执行conda install时发现进度条一直卡在“Solving environment”或者下载速度只有几十KB/s,大概率是默认源网络不太行。切到国内镜像源是立竿见影的解法。

执行以下命令配置清华源:

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config --set show_channel_urls yes

如果你想恢复默认官方源,删除配置文件里的channel即可:

conda config --remove channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/

也可以用中科大源:

conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/main/

配置完成后建议执行conda clean -i清理一下索引缓存,再重试安装。实测切换源之后,conda install pandas从原先的十几分钟缩到一分钟以内。

4.4 conda update:不要手贱乱升级的教训

很多人装完Anaconda第一件事就是conda update --all。我强烈建议不要这么做。

原因很简单:Anaconda 2020.02发行版的包版本是经过互相适配的,你一通conda update --all,可能把numpy、pandas都升到不兼容的版本,最典型的是scikit-learn版本升级后接口变化,自己写的代码跑不起来了。另一个问题是conda自身如果从4.8升到4.10以上,某些老环境的兼容性可能有小问题。

真要升级某个包,就精准地升级那一个:

conda update numpy

如果非要升级conda本体,建议升级前用conda env export导出一份环境配置备份,出问题还能回滚。升级后如果遇到“CondaValueError: Malformed version string”,大概率是版本不匹配,回滚到原版本是唯一解法。

4.5 环境导出与导入:批量复现环境的利器

要把当前环境的包列表完整记录下来,给同事或换机器用:

conda env export > environment.yaml

恢复环境:

conda env create -f environment.yaml

environment.yaml里包含了各个包的版本、来源channel信息。她自己在另一台机器上直接用这份文件重建环境,一条命令搞定,比一个一个pip install省心得多。

如果你只想导出pip安装的包列表:

pip freeze > requirements.txt

但注意,pip freeze会包含一些路径格式的包名,这在跨平台移植时偶尔会有兼容性问题。conda env export更干净,优先推荐。

5. 高频故障排查:conda命令失效、SSL验证报错、创建环境卡死

5.1 conda: command not found

最常见的问题。装了Anaconda但输入conda提示找不到命令,有三种可能原因:

一,安装脚本询问是否把Anaconda加入PATH时选了no,但这个只有在交互式安装时才会出现——选错了就需要手动配置环境变量。

二,静默安装后没有手动写PATH。

三,当前shell没有重新加载.bashrc。

解决办法:

echo 'export PATH=/root/anaconda3/bin:$PATH' >> ~/.bashrc source ~/.bashrc

这里的/root/anaconda3要替换成你的实际安装路径。验证一下:

which conda

5.2 CondaHTTPError: HTTP 403 FORBIDDEN

这个报错的完整信息通常类似:

CondaHTTPError: HTTP 403 FORBIDDEN for url <>

403的原因多半是channel配置出了问题,有不少是国内镜像不提供某些channel路径,或者你同时配置了多个源导致冲突。解决方法是清空channel配置,重新添加一个源:

conda config --remove-key channels conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/

然后清理缓存:

conda clean -i

如果还不行,直接编辑~/.condarc文件,把它改成:

channels: - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ show_channel_urls: true

5.3 创建环境一直卡在Solving environment

创建环境时如果进度条长时间卡着不动,大部分情况是conda在解析依赖关系时卡住了。原因很简单,包的依赖关系太复杂,conda的计算量会显著增大。

解决思路:

第一条命令,用conda clean --all清理缓存,有时缓存里的坏数据会导致解析卡死。

第二条,如果某种情况下需要指定版本,可以先不指定python版本,用默认的base版Python创建环境,再在环境里单独装需要的包。创建环境的计算量小一些,速度会快不少。

conda create -n py37

第三条,如果依赖本身就有冲突,比如你要同时装两个老版本包可能冲突,conda会尝试所有组合,这个过程非常耗时。改用mamba,它是用C++重写的conda替代品,解决依赖的速度快得多:

conda install mamba -c conda-forge mamba create -n py37 python=3.7

5.4 安装包时报CondaSSLError

这个错误的意思是conda在访问channel时无法完成SSL握手。常见原因是源服务器和你的机器之间SSL协议不匹配,或者系统时间不对。

解决方式比较简单:

conda config --set ssl_verify false

这个命令会关闭SSL证书验证,在无法访问HTTPS源或自建源时非常好用。但不建议长期开着,安全性会打折扣。问题解决后记得执行conda config --set ssl_verify true恢复。

5.5 卸载Anaconda和conda环境的备份

如果你以后不想要Anaconda了,卸载其实很简单:把anaconda3这个目录删掉,然后把.bashrc里关于anaconda或conda的PATH行删掉,最后source ~/.bashrc。

不要想着用yum remove或者什么官方卸载脚本,Anaconda没有提供卸载程序,目录删干净就是彻底卸载。但前提是——先备份你的环境列表:

conda env export > backup.yaml

不值钱的不用留,值钱的备份好。我见过有人机器空间不够,直接rm -rf ~/anaconda3,结果项目代码都在conda环境里跑的,瞬间啥都没了。当然conda目录里不应该放项目代码,但总有人这么干,引以为戒。

6. 一些针对真实场景的心智模型和扩展思路

装好Anaconda只是万里长征第一步。实际操作中会遇到很多具体问题,这里再分享几点个人经验。

6.1 管理多个环境的习惯养成

我的持久习惯是:

  • base环境尽量保持干净,就是原始装好的状态,不往里乱装包。
  • 每个项目或任务创建独立的环境,环境名和项目名对应:比如某推荐项目就建recsys环境,某图像处理Demo就建cv_demo环境。
  • 项目跑完不再维护时,不要急着删环境,先把环境导出成yaml文件保存下来,再用conda remove删掉,节省磁盘空间。万一以后想复用或者复盘,一条conda env create就能恢复。

这套习惯帮我省掉了很多重新配环境的痛苦。如果哪天你也在为“为什么我的环境跑不起来了”而烦恼,那多半是base环境被乱装包污染了。

6.2 关于磁盘空间的持续管理

Anaconda日积月累会占用大量空间,特别是你创建了多个conda环境、每个环境都装了上百个包,几个环境叠起来10GB以上轻轻松松。

定期执行:

conda clean --all

这个命令会清理缓存的安装包、临时文件等。再配合conda env list检查哪些环境不再使用,用conda remove -n 环境名 --all删除。磁盘空间不足的问题基本能缓解。

6.3 conda和Docker结合使用的思路

在服务器部署场景中,conda环境和Docker是两种互补的方案。如果项目只需要Python运行环境,conda足够;但如果你要保障绝对一致的部署环境,Docker镜像里同样可以安装Anaconda,再把conda环境作为镜像的一部分打进去。

这样做的优势是:conda负责Python包层面的依赖管理,Docker负责系统层面的隔离。两者结合,项目从开发到上线的环境一致性就非常高了。

6.4 Jupyter Notebook的远程访问

Anaconda自带Jupyter Notebook,安装之后可以在服务器上启动:

jupyter notebook --ip=0.0.0.0 --port=8888 --no-browser

这样远程就能通过服务器IP:8888访问。不过如果你直接在公网这么裸跑,安全性极差。建议至少设置密码:

jupyter notebook password

设置完之后再启动。我个人更推荐用Jupyter Lab,它继承了Notebook能力还支持多标签页和终端,体验更接近IDE。Anaconda 2020.02里默认带了jupyterlab,直接用就行。

6.5 conda在AI项目里的搭配建议

如果你接下来打算做机器学习、深度学习相关的事,Anaconda里的科学计算库比较全,numpy、pandas、scikit-learn都是预装好的。深度学习框架需要自己装:

conda install tensorflow-gpu=2.2 conda install pytorch torchvision torchaudio cudatoolkit=10.2

虽然2020.02是几年前的版本,但配合老项目、旧代码复现等场景非常合适。如果你是复现2020年前后的学术项目,这个环境最容易成功。

7. 最后的经验之谈

安了这么多次,我更想说的是:安装步骤本身并不复杂,真正体现功力的地方是你对环境的治理能力。

我在做模拟项目X时,因为反复装环境卸环境、切换conda和pip、用sudo装包、随意升级依赖,结果整套环境乱成一锅粥。后来撕掉重来,遵循一套最简单的规矩——每件事都是一条命令能拆解的,base环境不动、所有依赖用conda或pip在原环境内安装、环境备份打底,数据也终于稳定了。

如果你在CentOS 7上装Anaconda遇到莫名其妙的问题,我的建议是:下载包校验一遍、确保bzip2装好、老老实实用交互式安装、装完检查which python和which conda指向,这四步走完,大概率不会翻车。

装好环境只是起点,真正能提升你效率的是对conda命令的熟练运用。多学会用conda env list查看环境、conda list查看包、conda search找版本,慢慢地你会感受到虚拟环境管理带来的便利——项目之间的依赖不再互相打架,换项目就是一条conda activate的事。

到这儿,整个CentOS 7安装Anaconda及基本命令使用的内容就全部梳理完了。按这个流程走一遍,你也会发现在Linux上搭建Python数据分析环境其实没有想象中那么玄乎,踏实看命令、踏实理解每一步,剩下的就只是时间问题。

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

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

立即咨询