ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Ubuntu上安装Anaconda3全指南:环境变量配置与避坑实战

Ubuntu上安装Anaconda3全指南:环境变量配置与避坑实战 第一次在Ubuntu上装Anaconda3我也和很多人一样搜到教程复制命令按回车然后坐等它装完。问题是装完之后我连conda命令都找不到折腾了半个多小时才意识到是环境变量没生效。后来在几台不同的Ubuntu机器上反复装过很多次包括x86_64的服务器和aarch64的ARM开发板该踩的坑基本上都踩遍了。这篇文章不打算给你一份“复制粘贴就完事”的傻瓜教程而是把安装过程中每一步背后的原理、容易翻车的细节、以及装完之后的必做配置一起讲清楚。无论你是刚接触Ubuntu的初学者还是准备在多台机器上批量部署Python环境的老手这篇文章应该都能让你少走点弯路。1. 安装前先想明白三件事不然迟早折腾第二遍很多人拿起安装脚本就开跑装到一半才发现选错了包或者装完了才发现和系统里已有的Python环境互相干扰。这些问题如果提前花五分钟想清楚后面能省下一整天的排查时间。1.1 选Anaconda3还是Miniconda3Anaconda3和Miniconda3的关系可以理解成“全家桶”和“基础组件”。Anaconda3自带300多个数据科学和机器学习相关的Python包装完就能直接用scikit-learn、pandas、numpy、Jupyter这些工具磁盘占用大概在3GB左右。Miniconda3只包含conda包管理器、Python解释器和极少数基础依赖整体体积可以控制在80MB左右剩下的包全部由你自己按需安装。我的建议是如果你刚接触Python电脑磁盘也比较充足装上Anaconda3确实省心因为它把数据科学领域八成常用的东西都预装好了不用一个一个去折腾依赖。但如果你是老手或者是要在Docker容器、CI流水线、低配云服务器这类场景下使用那强烈建议用Miniconda3你需要什么包就装什么包干净利落也不会被那一大批用不上的预装包拖累系统。这篇文章以Anaconda3为例展开安装步骤但整个流程的思路、命令和避坑点对Miniconda3同样适用。1.2 确认系统架构和Python版本这一步是很多人会遗漏的。Ubuntu可以跑在x86_64Intel/AMD的64位CPU、aarch64ARM架构比如树莓派、高通和苹果M系列的部分虚拟化场景、甚至ppc64leIBM PowerPC上不同架构必须下载对应版本的安装包否则会直接报“cannot execute binary file”之类的错误。在终端里跑一下这个命令就能看到你的系统架构uname -m输出x86_64下载文件名里带Linux-x86_64的安装包输出aarch64下载文件名里带Linux-aarch64的安装包输出armv7l这类的说明是32位ARMAnaconda官方基本不提供对应安装包建议改用Miniconda3的对应版本或者直接用系统的apt方式装Python关于Python版本Anaconda3新版安装包对应的Python解释器版本在2024年之后通常是Python 3.11或3.12。如果你对某个项目有特定的Python版本要求完全没必要去翻旧版Anaconda安装包——直接在安装完成后用conda单独创建一个指定版本的虚拟环境即可后面我会专门讲到。1.3 检查系统里是否已经装过conda相关组件如果你之前装过Miniconda3或者曾经安装过某个捆绑了conda的软件包再装一个Anaconda3很容易出现PATH混乱的情况表现为输入conda命令时可能调用的是旧的那个也可能两个安装目录里的包互不可见。安装之前先检查一下which conda which python如果没有输出或者输出指向/usr/bin/python说明当前系统还没有装过Anaconda系列可以放心开始。如果已经装了Miniconda3或旧版Anaconda3建议参考文末第6章的卸载流程先清理干净再装不要想着两个共存——在同一个用户下同时维护两套conda环境几乎注定会带来环境变量上的麻烦。2. 下载安装包官方源、国内镜像、文件校验一次搞清楚下载这一步看起来最简单但实际上翻车率不低。第一是很多人选了版本不匹配的包第二是直接从浏览器下载再拖到服务器上来回折腾浪费时间第三是下载完不校验装到一半发现文件损坏。2.1 官方源和国内镜像怎么选Anaconda官方下载地址是https://www.anaconda.com/download打开页面后选择Linux版本即可。但如果你人在国内从官网直接下载的速度通常比较惨淡几十KB/s都是常事一个500MB到1GB左右的脚本要下到天荒地老。在这种情况下直接用国内的开源软件镜像站下载要快得多。常用的镜像有两个清华大学开源软件镜像站https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/中国科学技术大学开源镜像站https://mirrors.ustc.edu.cn/anaconda/archive/下载之前先看一下installer帮助文档了解文件命名规则Anaconda3-版本号-平台.sh。比如Anaconda3-2024.06-1-Linux-x86_64.sh就是2024年6月版本、适用于64位Intel/AMD平台的安装脚本Anaconda3-2024.06-1-Linux-aarch64.sh则是适用于ARM平台的版本。在终端里直接用wget下载是最稳妥的方式既能断点续传也不会遇到浏览器下载大文件到一半断掉的问题wget -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2024.06-1-Linux-x86_64.sh-c参数表示如果下载中断下次执行可以从断点处继续下载。这个参数在大文件下载时非常实用。2.2 下载完成后一定要校验文件完整性下载看似完成了但网络传输过程中偶尔会出现文件损坏的情况。如果安装脚本不完整执行的时候会报各种莫名其妙的错误最典型的是tar: This does not look like a tar archive或Anaconda3 installer is corrupted。校验方法是把官方给出的SHA256校验值和本地文件的哈希值做对比。先看官方或镜像网站上标注的SHA256值再在本地执行sha256sum Anaconda3-2024.06-1-Linux-x86_64.sh计算出来的字符串如果和官网列出的完全一致说明文件是完整的。如果对不上果断删掉重新下载不要在损坏的文件上死磕。3. 命令行安装全流程从执行到验证Anaconda的安装脚本本质上是一个自解压的shell脚本里面的内容会把文件解压到指定目录然后执行一些初始化操作。理解这一点你在安装过程中就不会被那一长串的协议文本和信息刷屏吓到。3.1 执行安装命令并处理交互提示给安装脚本加上可执行权限然后运行chmod x Anaconda3-2024.06-1-Linux-x86_64.sh bash Anaconda3-2024.06-1-Linux-x86_64.sh执行之后终端会进入交互式安装流程先是显示一段License协议。按Enter键一页一页翻翻到最后输入yes接受协议这里的yes必须是完整的英文单词不能用y代替否则脚本会停下来不继续。接下来会问安装路径。默认是/root/anaconda3如果你是root登录的话或/home/你的用户名/anaconda3。对个人开发来说保持默认路径最省心不需要去改到/opt或/usr/local下面——把conda装在自己的home目录里能避开一大部分权限问题安装、升级、卸载都不需要sudo也更符合conda这种用户级包管理器的使用习惯。这里也可以用你自己的路径。最后一步很关键它会问Do you wish the installer to initialize Anaconda3 by running conda init?这个一定要输入yes。conda init会自动往当前用户的~/.bashrc里写入conda的初始化代码这样新开一个终端窗口就能直接使用conda命令。如果你手滑选了no之后手动初始化也不是不行我后面会讲怎么补救但确实没必要故意绕这个弯。3.2 静默安装适合服务器和批量部署如果你是在远程服务器上操作不想和交互式界面耗时间或者同时要给多台机器统一装环境用静默安装模式更合适bash Anaconda3-2024.06-1-Linux-x86_64.sh -b -p $HOME/anaconda3-b表示batch模式跳过交互确认直接执行安装-p指定安装路径按你的规划填写静默安装完成之后终端会提示你运行source ~/.bashrc让conda的配置生效。因为静默模式下脚本默认不会替你执行conda init所以我习惯在静默安装后立刻再补一条$HOME/anaconda3/bin/conda init bash这样做的效果和交互模式下的yes是一样的确保conda命令在新开的终端里直接可用。3.3 安装完成后的第一时间验证安装脚本跑完后先别急着庆祝。关掉当前的终端窗口重新开一个这是很多新手会忽略的动作或者执行source ~/.bashrc然后依次验证三个信息which conda conda --version which python python --version如果一切正常which conda应该指向你刚安装的Anaconda目录里的condaconda --version能正常输出版本号which python则应该指向/home/你的用户名/anaconda3/bin/python。如果which python还指向/usr/bin/python说明环境变量顺序有问题请直接跳到第4章去看怎么处理。4. 环境变量配置与故障自救这里最坑Anaconda安装过程中涉及的环境变量问题是搜索引擎上“ubuntu”相关热词里提出现频率极高的一类。这个问题说大不大但确实能让一个装好的Anaconda变成“好像装了又好像没装”的尴尬状态。4.1 conda init到底往.bashrc里写了什么conda init bash做的事情是在你的~/.bashrc文件末尾插入了一段初始化代码块。正常情况下这段代码长这样# conda initialize # !! Contents within this block are managed by conda init !! __conda_setup$(/home/yourname/anaconda3/bin/conda shell.bash hook 2 /dev/null) if [ $? -eq 0 ]; then eval $__conda_setup else if [ -f /home/yourname/anaconda3/etc/profile.d/conda.sh ]; then . /home/yourname/anaconda3/etc/profile.d/conda.sh else export PATH/home/yourname/anaconda3/bin:$PATH fi fi unset __conda_setup # conda initialize 这段脚本的逻辑很简单先尝试用conda的shell hook方式初始化如果失败就退回到加载conda.sh最后兜底方案是直接把Anaconda的bin目录加到PATH最前面。理解这段代码你在遇到问题时就知道该从哪里下手了。4.2 三个高频故障的完整排查链路故障一装完之后输入conda提示command not found这个我遇到过好多次。排查链路是这样的echo $PATH如果输出里完全找不到anaconda3/bin说明.bashrc里的初始化代码没有生效或者你打开的终端并没有重新读取.bashrc。还有一种情况是conda init压根没跑成功。解决方法是手动执行一下$HOME/anaconda3/bin/conda init bash然后重新打开终端窗口。如果这条命令还是不行再手动加载一次conda的环境入口source $HOME/anaconda3/etc/profile.d/conda.sh故障二conda能用了但python还是系统自带的这种情况通常是.bashrc里PATH的顺序出了问题。比如你自己手动写过类似export PATH/usr/local/bin:$PATH这样的自定义配置放在conda初始化代码块之后它会把系统路径重新排到前面结果which python找回来的还是/usr/bin/python。解决办法是打开.bashrc把自定义的PATH导出语句移到conda初始化代码块之前或者先看看有没有手动添加过Anaconda路径的旧配置。如果你之前手动写过export PATH/home/yourname/anaconda3/bin:$PATH而conda初始化代码块又是另一套逻辑两段代码会互相干扰建议把旧的手写PATH配置注释掉只保留conda init生成的代码块。故障三.bashrc改坏了终端打开就报错这是最让人头疼的一种情况。如果你在编辑.bashrc时写错语法或不小心在PATH里漏掉了某个基础路径会导致打开每个终端都报command not found连ls、cat这些基础命令都用不了。我的经验是遇到这种情况先保持冷静不要关终端。直接用绝对路径调用恢复工具/bin/bash export PATH/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin这行命令把PATH恢复成系统默认值然后再用nano或vim打开.bashrc检查问题改完保存后source ~/.bashrc验证。只要基础命令能跑起来修复只是时间问题。4.3 一个让人安心的配置关闭base环境自动激活装好Anaconda后你会发现每次打开终端命令行前面都会多出一个(base)前缀说明默认的base环境已经被激活了。这个现象本身没问题但有时候会拖慢终端启动速度也可能让系统的Python行为和你预期的不一样。如果你不喜欢这种默认激活的行为可以关闭它conda config --set auto_activate_base false这样新开终端就不再有(base)前缀你也不用担心后台的Python脚本误用到conda环境。要用的时候再手动conda activate base即可。5. 装完别急着用换源、建环境、测试一把过Anaconda装好了环境变量也没问题了但这时候直接用大概率会在安装软件包时被折腾得很惨。原因很简单conda默认连的是官方仓库下载速度不稳定。所以安装之后的第一件事是配置国内镜像源。5.1 给conda配置国内镜像清华镜像站提供了一个很简单的配置方案直接修改用户目录下的.condarc文件即可。先打开这个文件nano ~/.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 custom_channels: conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud保存之后清一下缓存确保新镜像生效conda clean -i配置好之后你可以用conda info查看channel信息确认是否已经走国内镜像。5.2 pip也要一起换源conda和pip是两套独立的包管理体系国内网络环境下pip默认的官方源速度同样不稳定。给pip换源的命令很简单pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple这会在~/.config/pip/pip.conf里写入配置以后用pip install安装任何包都会走清华镜像。5.3 创建自己的第一个虚拟环境并测试安装Anaconda和Miniconda的核心价值在于虚拟环境管理。我强烈建议你不要在base环境下直接装一堆乱七八糟的包而是为每个项目建一个独立的环境。比如要搭一个PyTorch的CPU版环境流程是这样conda create -n pytorch python3.11创建完成后激活环境conda activate pytorch这时候你的命令行前缀会从(base)变成(pytorch)说明已经切换到新环境。在这个环境里装PyTorch镜像配置生效的情况下conda install pytorch torchvision torchaudio cpuonly -c pytorch注意这里的-c pytorch指定了来源channel实际使用时如果是GPU版本要看你在CUDA用哪个版本命令会略有不同。装完后验证一下python -c import torch; print(torch.__version__)能正常输出版本号就说明整个Anaconda的安装、换源、虚拟环境创建这一整套链路都跑通了。这时候再体会一下为什么前面建议每台机器上不要同时维护两套conda环境管理本来就是为了让项目层面互相隔离、互不干扰但如果连包管理器本身都出现了两套那就是在环境管理器的层面上引入了新的混乱后面排查问题会很头疼。6. 卸载重装的正确姿势避免把系统搞成一团乱Anaconda并不是一个“装上就永远不用管”的软件。版本升级失败、想从Anaconda换成Miniconda、或者安装过程中搞出了PATH混乱却修不好都是需要卸载重装的常见原因。6.1 什么情况下必须彻底卸载如果你只是觉得Anaconda太臃肿想换Miniconda或者某个环境里的包坏到无法修复那确实值得卸载重装。但如果你只是想升级Anaconda版本通常直接在base环境下跑conda update conda和conda update anaconda就能解决完全不需要卸载。需要彻底卸载的信号有两个一是conda的初始化脚本和系统里其他环境变量配置发生了不可调和的冲突比如改了几次.bashrc还是找不到conda命令或者无法定位到正确的conda二是你安装了一个错误的版本比如在x86_64机器上装了aarch64的包残留下来的配置会让重装变得极其别扭。6.2 彻底卸载的完整五步第一步用conda自带的清理工具删除用户和环境配置文件conda install anaconda-clean anaconda-clean --yesanaconda-clean这个工具会把.conda、.continuum、.condarc等隐藏配置目录清理掉避免重装后残留的旧配置影响新环境。第二步删除Anaconda安装目录rm -rf ~/anaconda3如果你的安装路径不是默认的~/anaconda3改成你实际的路径。第三步删掉.bashrc中conda init写入的代码块。打开.bashrc找到第4.1节提到的那段“# conda initialize ”和“# conda initialize ”之间的内容整段删除。保留这段代码而目录又已经删掉的后果是每次打开终端都会自动跑一遍eval $__conda_setup然后报一堆找不到文件的错误。第四步清理环境变量残留。检查~/.bashrc、~/.profile、/etc/profile、/etc/environment系统级配置需要谨慎操作把任何手动添加的Anaconda相关PATH配置一并删除。第五步重开一个终端窗口验证which conda如果输出为空说明卸载干净了可以开始重装。6.3 重装时避免二进坑的三个经验根据我卸载重装过的实际经验有三点值得特别说一下第一重装之前别偷懒跳过清理步骤。哪怕你只是觉得“上次是装歪了这次好好装就行”残留的.condarc和PATH配置也可能让新装的Anaconda继续沿用旧目录的配置最终装完还是不对劲。我见过最典型的情况就是重装后conda info显示的channel还是旧配置或者base环境里多出来一堆不知道哪来的包。第二如果没有特别需求重装时优先选择Miniconda3而不是Anaconda3。你之前用Anaconda3时真正频繁使用的包其实就那么十几个完全可以通过conda create -n 环境名 python版本加后续安装的方式按需复制出来。这样装出来的环境体积更小依赖也更清晰。第三卸载时不要让conda随便升级到测试版。默认安装的Anaconda带的conda版本已经足够稳定除非某个新版本明确修复了你遇到的问题否则不建议在装完Anaconda后立刻去conda update conda --channel conda-canary——那是预发布通道出问题的概率比普通通道大得多。一些安装之外但迟早要面对的事安装Anaconda3这件事本身不难难点在于搞清楚它和系统的关系、和Python环境的关系以及你自己到底需要的是什么。我个人在折腾过几轮之后现在的做法是生产环境和开发容器一律用Miniconda3需要什么包就按需创建环境只有给刚入门的朋友演示数据科学工具链时才装一次完整的Anaconda3图省事。还有个小习惯分享给你无论是安装还是卸载每做完一个关键步骤都重新开一个终端窗口验证一下状态而不是在当前终端里反复source。终端窗口的头部会清楚显示当前环境变量状态很多奇怪的“明明装好了却不对”的问题其实都是因为旧终端窗口还在沿用入栈前的PATH状态。养成重开终端验证的习惯能帮你减少一大半不必要的惊慌。
返回列表