在Linux上安装Anaconda:Python环境管理与虚拟环境实战指南 📅 发布时间:2026/9/19 21:05:10 👁 浏览次数: 我第一次在Linux上安装Anaconda是几年前接手一台实验室的服务器。当时系统自带的Python 3.6勉强能跑但项目要求Python 3.8我既不敢动系统环境又不想手动编译折腾了一下午差点把系统搞坏。后来老老实实装上Anaconda才发现Linux上做Python环境管理最舒服的方案其实就是它。这篇文章我会把整个流程拆开讲从下载安装包、执行安装脚本、配置环境变量、换国内镜像源到创建虚拟环境和卸载清理每个环节都标注容易踩坑的点新手按步骤照做就够老手也能跳着看。1. 为什么建议在Linux上用Anaconda先理清需求和选择1.1 Python环境管理到底难在哪很多新手拿到Linux服务器第一反应是用系统包管理器装Python比如Ubuntu上的apt install python3CentOS上的yum install python3。这样确实省事但后面会遇到一个很现实的问题系统里的Python往往被系统工具依赖不能随便动。我自己就吃过亏。Ubuntu桌面环境里很多核心组件依赖/usr/bin/python3如果你为了让某个库跑起来用系统Python强行升级或安装了某个版本的依赖包轻则包冲突重则桌面环境出问题。近几年Ubuntu还加了PEP 668限制直接pip install到系统环境中会提示“externally-managed-environment”要求你使用虚拟环境或包管理器。这就是在告诉你别把系统Python当自己的开发环境。如果你只是写个一次性脚本那无所谓一旦需要同时维护多个项目每个项目依赖不同的库版本和Python版本没有隔离机制就会陷入无穷无尽的冲突。Anaconda出现正是为了解决这件事。1.2 直接系统装Python和Anaconda的差距我整理了一份对比方便你判断自己的场景方案优点缺点适合场景系统包管理器下载快随发行版更新版本通常较旧改动可能影响系统工具临时脚本、系统工具依赖源码编译版本完全可控可自定义优化选项编译慢依赖多升级维护麻烦特殊平台、需要定制化Anaconda自带大量科学计算包虚拟环境隔离conda能管非Python依赖体积大默认源慢还有学习成本数据分析、机器学习、多人共用服务器Miniconda体积小只带conda和Python按需装包没有预置的包需要自己安装追求轻量、只想用虚拟环境的人从实际使用体验来看如果你平时玩数据科学、深度学习Anaconda是最直接的选项因为numpy、pandas、matplotlib这些常用包已经预装好。如果你空间紧张Miniconda会更合适安装方式和本文几乎一模一样只是少了预装包。这篇文章以Anaconda为例子但Miniconda完全可以照抄只需把安装包后缀换成Miniconda的版本。1.3 本文适用的Linux发行版和基础准备Anaconda官方支持几乎所有主流Linux发行版包括Ubuntu、Debian、CentOS、Rocky Linux、AlmaLinux、Kali Linux等。不管你是物理机、虚拟机还是云服务器只要CPU架构是x86_64或者ARM64都能安装。动手之前建议确认以下几点有一个普通用户账号不推荐直接在root下安装。很多服务器默认用root我理解有些场景图省事但Anaconda装完以后创建的文件都归root后面其他用户想用就很别扭。建议先新建普通用户比如useradd -m -s /bin/bash alice再设置密码切到alice再继续。磁盘空间至少预留10GB。Anaconda本体不算大但环境一旦建多了每个环境都可能占几GB。内存2GB以上条件允许越大越好。创建环境时conda要解析依赖配置太差会卡很久。远程服务器最好能通过SSH连接并建议使用tmux或screen来跑长时间下载任务后面我会讲原因。2. 下载Anaconda官方渠道、国内镜像与安装包完整性校验2.1 从官网找到Linux安装包Anaconda官网的Download页面会根据你的系统自动推荐安装包但很多人在服务器上无法直接打开图形页面所以我习惯直接复制下载链接然后在服务器上用wget下载。命名规则很有规律类似Anaconda3-2024.10-1-Linux-x86_64.sh。字段拆开看就是软件名Anaconda3、版本号2024.10、构建版本号、平台Linux、架构x86_64。如果你的机器是ARM架构文件名会显示aarch64。下载之前可以用uname -m确认一下架构避免下错版本。命令参考wget https://repo.anaconda.com/archive/Anaconda3-2024.10-1-Linux-x86_64.sh如果你是在自己电脑上下载好安装包再传到服务器可以用scpscp Anaconda3-2024.10-1-Linux-x86_64.sh username服务器IP:/home/username/2.2 国内镜像源加速下载这里必须说实话Anaconda官方站点在国内的连通性不太稳定下载速度经常让人崩溃。所以我更推荐用国内高校或云厂商提供的开源镜像站正常公开访问直接下载即可。常用的两个清华TUNA镜像https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/阿里云镜像https://mirrors.aliyun.com/anaconda/archive/打开对应目录后能看到一串版本目录选你想要的版本找到Anaconda3-版本号-Linux-x86_64.sh文件用wget下载。比如wget -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2024.10-1-Linux-x86_64.sh-c参数表示支持断点续传下载中断了可以接着传。如果你的服务器在公司内网一般会有内部软件源或者镜像加速地址换成内网地址也是同样操作。注意一点看到.sh后缀别顺手解压它本身就是可执行的安装脚本不需要解压。2.3 SHA256校验装之前花一分钟省下后面大麻烦很多人下载完安装包就直接装了我见过不止一次因为文件下载不完整导致安装报各种奇怪错误。校验文件完整性最靠谱的方式是SHA256。官网下载页和国内镜像目录里一般都有SHA256SUMS文件里面记录了对应安装包的哈希值。在安装包所在目录执行sha256sum Anaconda3-2024.10-1-Linux-x86_64.sh会输出一串64位的十六进制字符。把这串字符和镜像站SHA256SUMS里的值对比如果一致说明文件完整不一致说明下载过程出了问题建议重新下载。也可以用一条命令自动校验echo 官方给的哈希值 Anaconda3-2024.10-1-Linux-x86_64.sh | sha256sum -c -如果输出OK就没问题。这个操作很像收到快递时看外包装包装完好不代表里面没碎但包装破了你一定不敢签收。2.4 远程服务器下载太慢时的操作建议在公司或者实验室的服务器上SSH连接一旦断开前台运行的wget就会中断。为了避免反复重传我习惯用tmux把下载任务挂在后台。tmux new -s download wget -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2024.10-1-Linux-x86_64.sh按CtrlB再按D就可以分离会话。之后SSH断开也不影响下载。想回来看进度执行tmux attach -t download即可。顺带说一句如果之后从Windows上传压缩包到Linux中文文件名很可能乱码这是编码问题不是Anaconda特有的别被吓到。安装包本身用英文字符命名正常不会碰到这个问题。3. 执行安装脚本的每一步交互选项、安装目录和conda init3.1 先确认拿到的是Shell脚本并赋予执行权限安装包下载完成后常见的执行方式有两种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两种都可以。新手经常遇到Permission denied错误多半是忘了加chmod x这时改用bash方式执行最省事。这里我特别建议安装时不要加sudo就用普通用户执行。原因很简单默认安装路径是/home/用户名/anaconda3完全在用户自己的目录下不需要root权限。如果加了sudo安装的文件会变成root所有以后当前用户创建环境、装包会遇到权限麻烦。3.2 安装向导里的问题到底怎么选执行安装脚本后会进入交互界面第一次装的人容易懵我按顺序翻译一下显示许可协议一堆英文用回车键或空格键翻页翻到底部后输入yes提示“Do you accept the license terms?”输入yes回车提示安装路径默认是/home/用户名/anaconda3直接回车即可提示是否初始化内容类似“Do you wish the installer to initialize Anaconda3 by running conda init?”这里输入yes很多教程会说最后一步填no理由是“不修改用户的.bashrc文件保持系统干净”。我自己的经验是如果你是新手想少折腾这一步就填yes。填yes会让conda自动把初始化配置写进当前用户Shell配置里装完重开终端就能直接使用conda命令。如果填了no后续你需要手动执行conda init或者手动配环境变量体验会差很多。3.3 conda init 在配置文件里做了什么选yes后安装脚本会在~/.bashrc文件末尾写入一段配置这段配置定义一个shell函数让conda命令、activate、deactivate这些命令在终端里生效。你不需要完整看懂这段代码但要知道它存在。如果安装时选了no或者初始化配置出现问题之后可以手动补齐~/anaconda3/bin/conda init bash如果你用的是zsh就执行~/anaconda3/bin/conda init zshconda init可以接受多个Shell参数比如bash、zsh、fish。装完以后配置只对当前用户生效不会影响系统其他用户这也是我建议每个用户各自安装的原因。3.4 安装完成后的验证命令安装结束后重开一个终端执行以下命令验证conda --version python --version which python conda env list如果一切正常终端提示符前面可能多了一个(base)这说明已经自动激活了base环境。如果你不习惯每次都自动进入base环境可以关掉conda config --set auto_activate_base false关掉之后终端不会再显示(base)但你依然可以用conda activate 环境名手动进入指定环境。我个人推荐关掉理由后面会讲。4. 终端找不到conda命令环境变量与Shell配置排查手册4.1 “conda: command not found”背后的几种可能这是安装Anaconda后最常见的问题没有之一。归根结底原因通常是下面几个安装时最后一步选了no没有执行conda init执行了conda init但没有重开终端直接在当前窗口敲conda当前用户的Shell是zsh但安装时只初始化了bash当前用户和安装用户不是同一个权限不足PATH变量被人为覆盖导致Shell找不到conda位置排查顺序我建议先看文件在不在ls -l /home/用户名/anaconda3/bin/conda文件存在说明安装本身没问题。再看PATHecho $PATH如果在输出中没有找到/home/用户名/anaconda3/bin说明Shell还没加载conda配置。4.2 手动把Anaconda加进~/.bashrc的写法最推荐的做法是重新执行一次conda init让它自己生成正确的配置~/anaconda3/bin/conda init bash执行完以后编辑~/.bashrc确认末尾出现了conda初始化块。如果你确实想手动写最简单的是在~/.bashrc末尾添加一行export PATH/home/用户名/anaconda3/bin:$PATH然后执行source ~/.bashrc但需要注意这种手动添加PATH的方式只解决了“conda命令能不能找到”的问题conda activate功能依赖的shell函数还得靠conda init生成的代码。所以很多时候手动写PATH后conda activate仍然会报错。这也是为什么我反复强调能用conda init就用conda init不要自己手写。把anaconda3/bin放在PATH前面还有一个作用让python命令优先指向Anaconda的Python而不是系统的/usr/bin/python3。这样在终端里执行python时进入的就是你自己可控的环境。4.3 source、新终端、非交互Shell三者的区别这里有一个非常容易让新手产生误解的点。执行source ~/.bashrc只对当前终端会话生效。新开一个终端时会自动读取.bashrc所以安装完重开终端往往就能直接用。如果你是用tmux或screen创建的窗口它们在某些配置下不会读取最新的.bashrc需要重开窗口。更隐蔽的问题是通过SSH执行一条远程命令、crontab定时任务、systemd服务这些场景下Shell默认不加载.bashrc或者只加载非交互模式下的那部分内容。所以你写在crontab里的conda activate xxx python script.py经常会遇到找不到conda命令。解决办法很简单在脚本或者定时任务里写绝对路径。/home/用户名/anaconda3/envs/myenv/bin/python /home/用户名/script.py不要依赖conda activate而是直接调用目标环境里的Python二进制文件。这个经验在写自动化脚本时能帮你省很多事。5. 换国内镜像源conda和pip都提速5.1 为什么默认源这么慢Anaconda安装好之后conda默认从repo.anaconda.com下载包。这个源在国外网络看起来是通的但包一多、一大的时候速度就不稳定经常看到下载到一半卡住或者超时。对于国内用户装完Anaconda后的第一件事我建议就是换源。这里要澄清一个概念换源只是把conda的下载地址指向国内镜像不改软件本身不降低安全性。开源软件在镜像站上的文件和官方仓库理论上一致且会做签名和哈希校验。5.2 conda换源的完整命令与.condarc配置最常用的是清华源执行以下命令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执行完以后查看当前配置conda config --show channels更完整的~/.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/free/ - 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/不同版本的Anaconda和不同镜像站目录结构可能略有差别。如果执行conda update或安装包时出现404或者CondaHTTPError多半是路径写错了可以打开镜像站目录确认实际文件名。换了源以后如果还是走老的缓存容易出问题建议清理索引缓存conda clean -i然后重新执行安装或更新命令。5.3 pip加速与conda/pip混用注意事项conda环境的底层也可以用pip安装包。很多人同时使用conda和pip但没换pip源的话照样会遇到速度问题。pip临时指定镜像源pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple想一劳永逸pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple这样以后pip安装包默认走清华PyPI镜像。这里提醒一句同一个环境里conda能装的包优先用conda装。什么时候用pip比如某个包在conda仓库里没有或者需要安装最新GitHub版本这时才用pip。最怕的就是同一个库先conda装一遍再pip装一遍两边互相覆盖最后环境状态变得极其混乱。我踩过坑所以现在自己定了一条规矩每个环境维护一份环境导出文件里面记录哪些包是conda装的哪些是pip装的。6. 用Anaconda创建和管理虚拟环境日常工作中的标准操作6.1 为什么必须用虚拟环境我举个真实场景。你有一个旧项目用的是TensorFlow 1.x只能在Python 3.7上跑新项目要读一个新框架官方要求Python 3.11。如果只有一个全局Python环境你只能在每次切换项目时卸载重装Python和依赖包费时费力还容易出错。Anaconda的虚拟环境就是解决这个问题的。每个环境相当于一个独立的Python小世界互不干扰。就算把一个环境搞坏了直接删掉重建只需要几分钟完全不影响其他环境。6.2 创建环境时各参数的含义创建一个名字叫ml_env、Python版本3.10的环境conda create -n ml_env python3.10参数说明-n环境的名称namepython3.10在这个环境里安装Python 3.10可以追加-y表示确认创建不用再手动输y如果你想创建一个环境并同时装几个常用包conda create -n web_env python3.10 django flask -y还可以用环境配置文件夹恢复环境conda env create -f environment.yml我自己的习惯是每个项目根目录放一个environment.yml文件记录项目所需的环境信息。换电脑或者换服务器时一条命令就能重建环境不用手动装几十个包。6.3 激活、退出、删除每天都会用的命令创建好环境后激活它conda activate ml_env终端提示符会从(base)变成(ml_env)此时which python指向的就是这个环境里的Python。退出当前环境conda deactivate查看本机所有环境conda env list输出列表中带*的就是当前环境。删除环境conda remove -n ml_env --all这里再强调一次脚本场景如果你想在shell脚本中让某个环境运行Python脚本最稳定的写法不是先激活环境再运行而是直接用该环境下的Python绝对路径。路径规律是/home/用户名/anaconda3/envs/环境名/bin/python。6.4 把conda环境接到PyCharm/VSCode里命令行跑环境很顺手但写代码时很多人还是在IDE里。以PyCharm为例在设置里选择Project Interpreter然后添加Existing Interpreter路径指向/home/用户名/anaconda3/envs/ml_env/bin/python这个环境即可使用。VSCode里按CtrlShiftP输入Python: Select Interpreter选择对应路径。这一步本质上是让IDE里跑代码时调用conda的环境而不是系统Python。很多人装完Anaconda后启动PyCharm发现还是用的默认解释器就是没有手动指定环境。7. 安装使用中的高频坑权限、系统Python、警告信息与周边问题7.1 磁盘空间不足与目录权限问题怎么破Anaconda安装完成后默认环境目录是~/anaconda3/envs。创建新环境时经常遇到磁盘空间不够的报错比如CondaError: Not enough space on disk排查第一步是看磁盘空间df -h /home如果/home所在分区确实空间紧张可以把环境创建到其他分区或者数据盘。方法是使用-p指定路径创建环境conda create -p /data/envs/proj_env python3.11激活时也要写完整路径conda activate /data/envs/proj_env这里还有个权限问题没有sudo权限的普通用户不要尝试把环境装到/opt、/usr这类系统目录。conda本身不需要系统级安装老老实实放在自己家目录或者自己有权限的数据盘即可。7.2 系统内置Python真的会被Anaconda弄坏吗很多第一次安Anaconda的人都会担心会不会把系统原来的Python弄坏正常安装和使用情况下Anaconda不会动/usr/bin/python3。它只是把Anaconda自己的目录加到了当前用户的PATH里系统服务、桌面组件调用Python时仍然直接指定/usr/bin/python3或/usr/bin/env python3一般不受影响。会让人产生误解的情况是你在终端里已经激活了某个conda环境然后执行sudo python结果发现Python变成了Anaconda的。这是因为sudo在某些配置下会保留当前用户的一部分环境变量导致它找到的是Anaconda的Python。这不是系统Python被破坏了而是你“用错了”环境。想确认系统Python没问题可以这样/usr/bin/python3 --version只要这个命令正常系统本身没有被动过。7.3 激活环境时遇到的warning提示怎么解有人截图问我明明环境里装了包直接运行某个Python脚本时出现了类似This Python interpreter is in a conda environment, but the environment has not been activated的警告。这个问题大多不是环境坏了而是你用了环境里的Python二进制文件却没有激活对应环境对应的环境变量。解决办法有几种第一种先激活环境再运行conda activate myenv python script.py第二种不想交互式激活环境下运行用conda runconda run -n myenv python script.pyconda run会自动给子进程设置好环境变量适合脚本和定时任务。缺点是它有一定额外开销而且不是特别适合需要交互输入的程序。日常开发中直接在终端激活环境是最顺手的方式。7.4 和新人有关的周边问题Linux新建用户、解压乱码安装Anaconda的过程中很多新手会顺手碰到两个无关但又很像的Linux问题。第一个是新建用户。前面提到不建议用root安装Anaconda。创建普通用户的操作很简单useradd -m -s /bin/bash alice passwd alice su - alice然后就在alice用户下执行Anaconda安装脚本。这样每个用户的配置和虚拟环境都是独立的不会互相污染。第二个是解压文件乱码。Windows下打的zip包传到Linux后解压文件名经常变成一堆乱码。这是压缩包内的文件名编码问题和系统默认编码不一致导致跟Anaconda没有关系。如果遇到可以试试unzip -O GBK 文件名.zip部分unzip版本支持-O参数指定编码。如果提示不支持可以改用7z或convmv修复文件名的编码。实在没时间折腾以后压缩文件时尽量使用英文文件名能避开90%的乱码问题。8. 卸载Anaconda与迁移环境不留下历史包袱8.1 干净卸载的标准流程很多人以为卸载Anaconda就是执行rm -rf ~/anaconda3。这个操作并不完整因为还有隐藏配置文件、环境备份目录残留在系统里。比较稳妥的卸载流程是conda activate base conda install -n base -c conda-forge anaconda-clean -y anaconda-clean --yesanaconda-clean会自动备份相关配置到~/anaconda_backup目录。执行完以后再删除主安装目录rm -rf ~/anaconda3如果以后确定不再需要这些配置可以连备份目录一起删掉。注意别手滑~/anaconda_backup里可能有你之前的配置和自定义环境信息最好先看一眼里面的内容再决定。8.2 手动清理残留配置文件、rc文件和PYTHONPATH如果你不想用anaconda-clean或者它因为某些原因安装失败也可以手动清理。需要检查的位置包括~/.condarcconda配置文件~/.condaconda缓存和状态目录~/.continuumAnaconda的辅助目录~/.bashrc、~/.bash_profile、~/.profile里面是否有conda init添加的代码块或手动设置的PATH~/.zshrc如果用的是zsh清理完这些后重开终端执行which conda如果没有任何输出说明卸载已经干净了。这里特别提一下PYTHONPATH。很多老手曾经为了让某些包全局可用在~/.bashrc里设置了PYTHONPATH。Anaconda卸载后如果这个环境变量还在会干扰后续其他Python程序导致“为什么我的包从这里导入”这种奇怪问题。建议在卸载Anaconda后自己检查一下这个变量echo $PYTHONPATH如果有内容就要考虑是否还要保留。我的习惯是尽量不设置全局PYTHONPATH项目的依赖交给虚拟环境管理。另外如果你是想卸载旧版本Anaconda然后换Miniconda或者新版本Anaconda建议卸载前先导出所有环境conda env export environment_backup.yml对于conda和pip混合安装的包再补一个pip冻结清单pip freeze requirements_backup.txt新机器上装好conda后执行conda env create -f environment_backup.yml可以快速恢复环境。虽然不可能100%还原但总比重装几十个包要强得多。最后分享一个我用了很久的小技巧装好Anaconda后先把auto_activate_base关掉也就是让Shell启动时不自动进入base环境然后把自己常用的项目环境固定好。这样终端干净也不会出现“明明没进环境Python却指向Anaconda”的困惑。需要哪个环境就主动激活哪个环境整个过程清清楚楚坑也少很多。