资讯动态

CentOS 7安装Anaconda3 2020.02:从PATH配置到conda命令实战

发布时间:2026/10/13 16:54:25 来源:尧图企业网站定制
用惯了Windows下的Anaconda再到Linux服务器上搭环境第一个绕不过去的坎就是安装和路径配置。很多人照着教程敲完命令结果重启终端后一个conda都找不到问题大多出在PATH上。这篇东西我不打算讲太虚的原理就基于CentOS 7 Anaconda3-2020.02这个经典组合把从下载、安装到日常命令使用的完整链路捋一遍重点标注那些我实际踩过、后来反复提醒别人的坑。1. 为什么我选了2020.02这个版本而不是随手装最新版先聊版本。标题里明确写了Anaconda3-2020.02-Linux-x86_64这个版本是官方2020年2月发布的快照自带Python 3.8。很多人第一反应是“这不老旧吗”但实际上在服务器场景里用固定版本不是保守而是可控。我见过太多人在生产环境里装最新版Anaconda结果几天后conda自动升级了Python或核心库早期跑的脚本报错回头排查才发现是底层解释器变了。Anaconda的更新策略相对激进它的默认channel里包版本替换速度快而2020.02搭配的Python 3.8有着非常稳定的兼容性尤其对Pandas、NumPy、Scikit-learn这些依赖底层C扩展的库3.8的轮子基本全都齐了。另外CentOS 7的系统自带Python是2.7.5很多系统工具比如yum依赖它。若你贸然把系统默认Python换成3.x极有可能把yum搞挂。Anaconda解决这个问题的思路是做一个独立的Python家族目录不动系统自带解释器只通过PATH优先级把conda环境“放”到前面。这也是为什么安装完后git、vim、系统脚本都还是走老Python只有python和pip被conda环境接管。所以如果你是跑机器学习训练、数据处理脚本或者给团队搭统一实验环境2020.02这个版本是偏稳妥的。如果你的场景是需要新语法特性或最新包版本那当然可以用新版但建议在独立环境里测试而不是直接覆盖这套。安装前还有个前置条件——确认Linux内核是64位。现在基本不会遇到32位的情况但用uname -m看一眼总没错输出x86_64就放心装。还有一点容易被忽略磁盘空间。Anaconda完整安装后大概占用3GB以上空间安装过程中解压临时文件也要额外空间。我之前在一台只有20GB的云主机上装装到一半报No space left on device最后硬是把没用的日志清了一遍才继续。建议先df -h看看根分区余量低于5GB就别硬来。2. 下载安装包的完整过程与校验工作下载方式有几种我推荐的是先到官方归档仓库拉取安装脚本而不是直接在官网点“Download”那个按钮——因为官网给的是最新版链接你要找旧版本必须进archive路径。cd /opt wget https://repo.anaconda.com/archive/Anaconda3-2020.02-Linux-x86_64.sh如果你所在网络访问官方源比较慢可以用国内镜像源来替代。镜像站一般都有archived版本的目录比如把repo.anaconda.com/archive/替换成你熟悉的开源镜像站的/anaconda/archive/路径即可文件完全一致下载速度快好几个量级。下载完以后强烈建议做一次校验sha256sum Anaconda3-2020.02-Linux-x86_64.sh然后去官网查到对应的SHA-256值核对一下。我平时下载这种大型安装包都会算一遍因为以前经历过下载中断后文件不完整的情况直接跑安装脚本会卡在半路报错还莫名其妙。花了半分钟做校验能省下十几分钟排查问题的时间。校验通过后给脚本加执行权限chmod x Anaconda3-2020.02-Linux-x86_64.sh然后执行安装。这里需要注意执行方式bash Anaconda3-2020.02-Linux-x86_64.sh有人用sh来执行在CentOS 7上sh默认指向bash问题不大但为了保险起见我统一用bash。脚本跑起来后先是一堆协议内容按回车或q跳过然后会问你Do you accept the license terms?输入yes回车。接下来是安装路径的交互提示。默认路径是/root/anaconda3如果你是root用户安装我觉得这个路径可以用如果是普通用户默认会在/home/用户名/anaconda3也符合预期。但我见过有人习惯把软件统一放到/opt/anaconda3或/usr/local/anaconda3这样做没有错只是后续要手动配PATH不如默认路径那么顺手。真正关键的交互是这句Do you wish the installer to initialize Anaconda3 by running conda init?这里选yes安装器会自动修改当前用户的shell配置文件比如~/.bashrc写入conda的初始化逻辑。如果你在这里选了no装完之后conda命令直接不可用还得自己手动修PATH徒增麻烦。我第一次装的时候就是没仔细看随手选了no结果后面补配置补了一通。最后安装过程会输出一句感谢安装的提示并提醒你打开一个新的终端窗口。到这里二进制层面已经完成。3. 环境变量与conda init背后做了什么这是很多人装完就懵的地方明明显示installation finished但敲conda --version就是提示command not found。原因就落在前一步那个conda init没执行或者新终端没重开。我建议装完后无论如何都手动执行一次初始化命令确保万无一失source ~/.bashrc conda activate如果你之前选的no或者遇到shell配置没有自动写入的情况可以自己用conda init补上/root/anaconda3/bin/conda init bash然后重新打开终端。conda init做的事情说简单点就是把下面几行加到~/.bashrc的末尾# conda initialize # !! Contents within this block are managed by conda init !! __conda_setup$(/root/anaconda3/bin/conda shell.bash hook 2 /dev/null) if [ $? -eq 0 ]; then eval $__conda_setup else if [ -f /root/anaconda3/etc/profile.d/conda.sh ]; then . /root/anaconda3/etc/profile.d/conda.sh else export PATH/root/anaconda3/bin:$PATH fi fi # conda initialize 这段逻辑不复杂优先通过shell.bash hook来挂载conda函数这样conda activate就能作为shell函数正常工作万一hook方式失效就退回到直接往PATH前面塞/root/anaconda3/bin。理解这个原理之后那些“装完找不到conda”的排查思路就清晰了先看ls /root/anaconda3/bin/conda确认文件存在。再看tail -n 20 ~/.bashrc确认初始化块写没写。最后在当前终端手动执行export PATH/root/anaconda3/bin:$PATH若conda立即可用说明就是PATH问题。值得提醒的是千万别手动把anaconda的bin目录硬加进/etc/profile或/etc/environment。全局PATH改动会影响所有用户而且和conda自己的初始化块冲突容易引起莫名其妙的问题。按官方方式走conda init是最干净的。同时装了Anaconda后不要试着去改默认shell的python链接。CentOS 7里/usr/bin/python是系统环境的一部分你把它指向anaconda的python可能导致系统组件比如firewalld、yum崩溃。Anaconda的设计哲学就是用PATH优先级而不是替换符号链接你不需要在系统层面动任何东西。4. conda基础命令体系与日常高频操作装好之后日常打交道的主要是conda和pip两个命令。先看版本conda --version python --version如果conda版本正常说明环境已生效。接下来我按使用场景把常用命令分成几个模块每个模块都是实际高频会用到的。4.1 环境管理创建、激活、退出、删除Anaconda最核心的价值之一是虚拟环境隔离。不同的项目依赖不同版本的库强混在一起迟早出问题。创建环境的标准写法conda create -n myenv python3.8这条命令会创建一个名为myenv的新环境并指定Python版本为3.8。如果不想每次确认依赖可以加-y参数。创建时还可以顺便装包conda create -n myenv python3.8 numpy pandas jupyter -y激活环境的命令是conda activate myenv在旧版的conda里曾经用source activate myenv但那套方式已经被官方废弃了。**直接用conda activate即可。**激活后终端前面会出现(myenv)前缀表示当前处于该环境中。退出当前环境conda deactivate删除环境conda remove -n myenv --all列出所有环境conda env list我自己的习惯是每个项目都独立建一个环境并在环境名里缀上Python版本或项目代号比如nlp_py38、cv_py39。环境多了以后conda env list会非常有用能一眼看出哪些环境还在用、哪些可以清理。4.2 包管理安装、更新、卸载与检索环境内安装包最常用的是conda install numpy指定版本安装conda install numpy1.19.5安装多个包conda install numpy pandas matplotlib更新指定包conda update numpy卸载包conda remove numpy检索某个包有哪些可用版本conda search numpy这里有个很容易迷惑的操作conda install和pip install有什么区别简单说conda是Anaconda自带的包管理器它管理的包一般是从Anaconda官方channel下载二进制预编译不依赖系统的编译器工具链遇到科学计算包时安装效率很高。pip则从PyPI下载通用性更强但有些包在pip上只有源码发布安装时会现场编译既慢又有可能缺依赖报错。实际做法是优先用conda installconda里找不到或版本太旧再用pip install。混用的时候要记住一个坑——在同一个环境里用pip装进去的包对conda是不可见的反之亦然卸载的时候也需要从对应的包管理器卸载否则可能留下“幽灵包”。最典型的就是OpenCV这种底层带大量本地库的包。conda install opencv-python在conda里不一定有但pip install opencv-python很快就能装好因为PyPI上有预编译的wheel文件。这两条路对应着不同的包管理仓库没必要强行统一知道自己在用什么就行。4.3 虚拟环境下pip的用法在conda环境里激活了虚拟环境后直接敲pip默认就是该环境内的pip不需要额外操作。验证一下which pip如果在(myenv)下输出路径是/root/anaconda3/envs/myenv/bin/pip那说明pip确实绑定在当前虚拟环境。装包pip install requests导出当前环境依赖清单pip freeze requirements.txt以及根据清单恢复环境pip install -r requirements.txt对于Python开发者来说requirements.txt几乎成了项目标配。但有一个细节pip freeze会把环境中所有包包括依赖传递包都列出来非常臃肿。我一般用pipreqs这个工具只扫描项目代码里实际import到的包生成的清单更干净。不过这只限于纯pip依赖的项目如果项目中还混有conda安装的包最好再手动把那些包也加进去。5. 配置国内镜像源解决conda官方源龟速问题服务器在国内的网络环境下直接用官方源安装包经常卡在几KB/s甚至超时失败。解决办法就是切换国内镜像源。先说conda的源配置。conda的源配置存放在~/.condarc文件中如果你不想手动编辑这个文件可以用命令行写入。常见的镜像源地址格式是channels: - defaults - 镜像站提供的anaconda路径在CentOS 7上我实际操作中最稳的做法是完整覆盖.condarcchannels: - conda-forge - defaults show_channel_urls: true写完以后执行conda clean -i conda update --all这两条的作用是清除索引缓存并重建让conda重新拉取新源里的包列表。这里有个容易踩的坑只改.condarc不清缓存可能仍然命中最旧的下载链接表现为“好像改了源但速度没变化”。conda clean -i很关键。pip的源配置也要一起弄因为很多第三方包conda源里根本没有最终还是要走pip。pip的配置文件在~/.pip/pip.conf普通用户或/etc/pip.conf全局。CentOS 7上推荐改用户级配置[global] index-url https://pypi镜像站/simple trusted-host pypi镜像站域名如果你某个临时任务想用某个特定源也可以用命令覆盖pip install pandas -i https://pypi镜像站/simple要提醒的是镜像站有同步延迟某些新发布的包版本可能滞后一两天。如果某个包在镜像源上找不到最新版可以用--extra-index-url增加官方PyPI作为补充源而不是把源整个换掉。另一个常见的坑是在非conda环境下用pip install会把包装到系统Python的全局目录里。比如你没有conda activate任何环境就直接pip install xxx很可能装到了/usr/lib/python3.6/site-packages之类的地方。久而久之系统Python环境被污染各种库版本冲突。所以在服务器上做Python开发时我的习惯是先激活环境再敲pip命令如果没有激活看一眼which pip确认归属。6. 常见报错与排查链路conda卡住、命令丢失、权限不足用一个统一的实例来分析。你试图用conda install tensorflow结果卡在“Solving environment”半小时转圈圈。这种问题我遇到过很多次原因是conda为了解析依赖会去请求所有channel的repodata文件当channel配置有问题、源不稳定或包数量庞大时解析就卡住了。排查顺序先conda config --show channels确认channel列表正常。再conda clean -i清理缓存。然后试一个很小的包比如conda install -y zlib如果小包能秒装说明源没问题问题在tensorflow本身的依赖复杂度上用conda install -c conda-forge tensorflow或改用pip install tensorflow绕过即可。如果是网络超时导致的检查是否能正常访问源地址curl -I 源地址。还有一种情况是conda自己都启动不了了报错类似No module named conda。这种多半是因为编译环境或手动动了anaconda的lib目录。CentOS 7系统里如果缺某些依赖也有可能造成Python解释器加载异常。最直接的恢复方式是回到base环境重新运行/root/anaconda3/bin/conda update -n base conda如果连这步都失败只能Anaconda重新安装同版本覆盖。好消息是Anaconda的安装器支持覆盖安装之前建好的env目录会保留在/root/anaconda3/envs里不至于推倒重来。再有一个高频问题权限不足。如果安装时用root装的Anaconda后来切换到普通用户使用会碰到PermissionError或者无法创建新环境。解决方式是把anaconda3目录的属主改成那个普通用户chown -R 用户名:用户组 /root/anaconda3注意如果安装在/root/anaconda3普通用户可能连进入的权限都没有那就得考虑目录级别授权或重新安装到普通用户目录下。生产环境我一般建议用普通用户安装Anaconda这样后期所有操作都不需要sudo权限边界也清晰。已经用root装了也没关系建一个专门用户把anaconda目录以相同方式拷贝过去也行但更省事的还是直接在那个普通用户下重新跑一遍安装脚本反正依赖包都在本地缓存里重装也很快。7. conda与系统Python的共存原则以及卸载Anaconda讲完安装和用法还有一个不得不知的问题conda环境下的python和系统python能共存的底层逻辑。先看这样一件事你在(base)环境里执行which python输出的是/root/anaconda3/bin/python退出环境后执行同样的命令输出/usr/bin/python。两者切换完全是基于PATH的环境变量顺序。当你激活conda环境时conda会把/root/anaconda3/bin插入到PATH最前面此时你的所有命令都会优先命中这里的工具。这跟Windows上“把某个目录加入系统环境变量”是同一回事只是conda帮你自动处理了。这样共存的代价是任何时候都不应该手动去改系统Python目录里的site-packages同理也不要轻易在conda里装一个和系统冲突的系统级服务插件。我自己发生过一次比较尴尬的事在(base)环境里pip install httpie装完以后确实能用但我在没激活环境的系统环境里又yum install httpie装了一个旧版两个命令重名结果调用时完全看PATH顺序混乱了好一阵才理清。卸载Anaconda的方式同样很有讲究。官方推荐的办法不是直接把整个目录删掉因为那样会遗留大量登录配置和PATH残留。正确步骤是rm -rf /root/anaconda3但删除前先把~/.bashrc里conda init那一整段注释或删除掉否则下次打开终端会报一堆hook找不到的warning。还要检查~/.condarc、~/.conda目录这些残留配置一并清理干净。有人卸载后重启系统发现某些命令报错十有八九是PATH里还留着anaconda的路径。处理顺序先删配置、再删目录、最后重开终端。这个顺序别搞反。8. 配置完成后的一些验证与收尾建议安装到这里算是真的完成了。最后分享几个我每次搭完环境都会做的小动作当作留个检查清单验证conda可用conda --version、python --Version。验证虚拟环境可用conda create -n test_env python3.8 -y conda activate test_env python -c import numpy; print(numpy.__version__)。确认镜像源生效执行conda install requests -y看下载速度。设置默认不激活base环境如果你不想每次打开终端都自动进入(base)状态可以执行conda config --set auto_activate_base false习惯了之后会发现这样更清爽需要时再手动conda activate。为conda环境设置独立的包安装目录如果服务器有多个分区支持把环境目录放到大容量磁盘上。可以通过conda create --prefix /data/envs/myenv python3.8显式指定路径但这样创建的环境必须用conda activate /data/envs/myenv激活不能只用名字。命名环境比较方便路径环境更灵活看需求选。这些经验都是我在一台台CentOS服务器上反复摸出来的。最开始装Anaconda只是为了跑一个数据处理脚本一路踩过命令丢失、源速度慢、权限混乱、conda自身损坏这些坑后来把安装流程整理成了一套固定套路但凡有新机器照着这套走一遍基本十分钟内就能进入正常开发状态。CentOS 7的长期支持周期快到尾声很多人在迁移系统但存量机器上这套Anaconda安装和用法短期内仍然实用。希望这篇内容能帮你把环境搭得干净一些少走我走过的弯路。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑