
1. 先想清楚为什么装 Python 环境要绕道 Anaconda1.1 从一次真实翻车说起几年前带一个新人做数据清洗他本地用原生 Python 装好了解释器pip 也配了前两周跑得好好的。第三周项目要加一个目标检测的小模块他pip install opencv-python之后原本能跑的 numpy 突然报导入失败卸载重装又轮到别的库出问题。折腾了一下午最后发现是几个包的依赖版本互相打架而他所有项目共用同一个全局环境谁也没法动。这就是我后来逢人就说anaconda安装这件事必须先讲清楚场景的原因。Anaconda 不是一个更高级的 Python它本质是一个环境管理器 包管理器 预装科学计算全家桶的组合体。它的核心价值不在于让你少敲几条命令而在于把项目 A 要 numpy 1.19、项目 B 要 numpy 1.26这种天然冲突用虚拟环境物理隔离开。对于刚入门的人来说anaconda安装教程这类内容满网都是但绝大多数只告诉你点哪个按钮不告诉你每个选项背后的代价。我见过太多人装完之后遇到一堆莫名其妙的报错然后归咎于Anaconda 有毒其实问题在安装那一刻就埋下了。这篇内容我按我自己的实操习惯来写Windows 为主线Linux 和 macOS 单独开一节中间穿插镜像源配置、虚拟环境管理、PyCharm 和 VSCode 对接、以及一堆我在实际项目里踩过的坑。适合完全没装过的新手也适合装过但一直没搞明白环境为什么乱的人。你看完至少能做到三件事干净装好、知道每个选项为什么这么选、遇到报错能自己定位。1.2 Anaconda、Miniconda、原生 Python 该怎么选很多人纠结的第一个问题就是这个。我直接给结论再用表格说明。原生 Python 官方安装包只给你一个解释器加 pip。它的优点是轻几十兆缺点是你得自己维护所有依赖科学计算类的包numpy、scipy、pandas在 Windows 上编译轮子经常缺装不上就只能干等。Miniconda 是 Anaconda 的极简版只带 conda 和 Python不带任何预装库安装包一百兆左右。它的定位是我要 conda 的环境管理能力但不需要那一堆用不上的包。Anaconda 是完整版预装了 numpy、pandas、matplotlib、scikit-learn、jupyter 等几百个包安装包六百兆到八百兆装完占三到五个 G 的磁盘。它的定位是我懒得一个个装先给我一套能跑数据分析和机器学习的完整环境。对比项原生 PythonMinicondaAnaconda安装包体积30MB 左右100MB 左右600MB 以上安装后占用200MB 左右1GB 左右3GB 到 5GB预装科学计算库无无全套环境隔离能力需自己配 venvconda 完整支持conda 完整支持适合谁写脚本、做后端有经验、想自己控新手、数据分析、机器学习我自己的习惯是主力机装 Miniconda学生或刚转行的人装完整版 Anaconda。原因很简单新手前三个月最需要的是少一步操作就能出结果预装的 jupyter 和 pandas 能让他们更快看到正反馈而老手知道自己要什么Miniconda 装完自己按需拉包反而更干净。注意不管选哪个同一台机器上不要同时装 Anaconda 和 Miniconda。两者都会往用户目录写.conda和.condarcPATH 也会互相污染出问题极难排查。要换就先把旧的彻底清掉。2. 安装前的准备工作版本、路径与三个必查项2.1 版本选择为什么别追最新Anaconda 的版本号格式大致是年份.月份-序号比如 2024.10-1 这种。同一年的版本之间Python 主版本可能就不一样早期版本带 Python 3.9现在的新版本普遍是 3.11 或 3.12。我的建议是不要装刚发布不到一个月的版本。原因很实在Anaconda 官方源里的预编译包要跟着 Python 版本做适配新版本刚出来时总有一部分包尤其是小众的、依赖 C 扩展的还没跟上你装完发现某个库死活装不上回头降级 Python 又要重建环境纯粹浪费时间。稳妥做法是选上一个季度甚至半年前的稳定版本。如果你是做深度学习还要考虑框架的支持情况很多框架的稳定版对 Python 版本是有明确上限的装太高反而要自己降。具体到去哪下载记住一个原则优先用国内镜像站下载。官网的下载服务器在境外几百兆的包经常跑到几十 K 每秒还可能中途断掉。国内几所高校和企业维护的镜像站都有 Anaconda 的安装包存档速度能跑满带宽而且安装包本身和官网是一致的不用担心里面被改了什么。镜像站的选择上我一般用清华的它的存档比较全从很早的版本到现在的基本都有方便你回退到老版本。阿里云的也可以但存档没那么全。2.2 安装路径中文路径和空格是隐形雷区这一条我要单独拎出来讲因为它是最容易被忽略、后果又最严重的。Anaconda 的安装路径里不要出现中文不要出现空格不要出现特殊符号。最好也别装到 C 盘的系统目录下。为什么中文不行因为 conda 在创建环境、编译包的时候会调用一大堆底层的命令行工具这些工具对非 ASCII 字符的处理一直不太稳。你装的时候可能一切正常等到某个包需要现场编译就突然抛出一堆乱码错误你查半天都查不到根因。空格的问题类似很多脚本在传路径参数时不做引号转义路径一带空格就被截断成两段。我推荐的路径是D:\anaconda3或者D:\dev\anaconda3这种短、纯英文、无空格。Linux 下就是/home/用户名/anaconda3这是官方脚本的默认路径改都不用改。C 盘的问题在于权限。Windows 上 C 盘根目录和 Program Files 都受系统保护普通用户往里面写文件要提权conda 在装包时会往安装目录写缓存和临时文件权限不够就直接失败。虽然用管理员身份装能绕过去但后续用普通账户运行时又会遇到只读问题得不偿失。2.3 三个必查项装之前花两分钟确认三件事能省掉后面半小时的排查。第一磁盘空间。完整版 Anaconda 装完加缓存保守估计留 10G。我见过有人 C 盘只剩 5G 就硬装装到一半失败残留文件还得手动清。第二旧环境是否清干净。用where pythonWindows或which -a pythonLinux/macOS看看现在系统里认的 Python 是哪几个。如果之前装过官方 Python 或者其他发行版先把它们的 PATH 项从系统环境变量里摘掉不然装完 Anaconda 会出现我明明装了 conda命令行里的 python 却是另一个的情况。第三杀毒软件。这个不是迷信。某些安全软件会实时扫描新建的每一个文件conda 装包时会一次性解压几万个文件扫描拖慢速度不说偶尔还会把 conda 的某个可执行文件锁住导致文件被占用的报错。装的时候临时关掉实时防护装完再开回来能少一堆事。3. Windows 平台手把手安装全流程3.1 下载与校验打开镜像站进到 anaconda/archive 目录往下翻找到你要的版本。文件名里带Windows-x86_64的是 64 位 Windows 版现在基本只有这一种可选了32 位早就停止维护。如果你的机器是 ARM 架构比如某些骁龙处理器的轻薄本要专门找带aarch64的包。下载完之后如果你在意完整性可以校验一下哈希值。以 Windows 为例在文件所在目录按住 Shift 右键选择在此处打开命令行然后certutil -hashfile Anaconda3-2024.10-1-Windows-x86_64.exe SHA256把输出的字符串和镜像站页面上标注的哈希值对一下一致就说明文件完整。这一步大部分人懒得做但我确实遇到过下载中断导致安装包损坏的情况表现是双击安装没反应或者中途报错很容易误判成系统问题。3.2 安装向导里每一项该怎么选双击安装包前面几步是许可协议默认下一步就行。真正有讲究的是下面这四屏。第一屏安装类型。会问你给谁装Just Me 还是 All Users。这里一定要选 Just Me。原因前面讲过All Users 会往 Program Files 里写需要管理员权限而且后续多用户环境下权限归属很乱。Just Me 装到当前用户目录下完全不需要提权出了问题也好清理。第二屏安装路径。默认是C:\Users\你的用户名\anaconda3。如果你 C 盘空间紧张直接改到D:\anaconda3。注意只要路径已经存在并且非空安装程序会警告你要不要覆盖这种时候停下来检查一下别手快点了确定把别的数据清了。第三屏两个勾选项。这是最关键的。第一个是Add Anaconda3 to my PATH environment variable。安装程序自己在下面写了 Not recommended不要勾。勾了的后果是Anaconda 自带的 Python、pip、curl 等一堆工具会被塞进系统 PATH 最前面其他依赖系统 Python 的软件比如某些游戏的启动器、某些开发工具的插件会突然调用到 Anaconda 的版本出现各种诡异问题。不勾的代价只是你以后要用 Anaconda 得走Anaconda Prompt这个专用终端或者手动执行一次初始化这点不便完全可以接受。第二个是Register Anaconda3 as my default Python 3.x。这个可以勾。它只是往注册表里登记一下让那些找系统默认 Python的软件能识别到 Anaconda不会污染 PATH风险很低。第四屏安装进度。完整版解压几百兆包根据机器性能要花五到二十分钟进度条卡在某处不动是正常的别急着强杀。中途如果弹出的黑框里刷一堆警告只要最后显示 completed 就没事。3.3 验证安装三条命令定生死装完之后从开始菜单找到Anaconda Prompt注意不是系统的 cmd也不是 PowerShell。这个快捷方式会在启动时自动执行初始化脚本把 conda 加进当前会话的 PATH。打开后依次敲conda --version python --version conda info第一条应该输出类似conda 24.9.2的版本号。第二条输出 Python 版本。第三条会打印一大堆环境信息重点看四个字段base environment指向你安装目录、channel URLs是你配置的源、envs directories是环境存放位置、platform是 win-64。如果第一条就报 conda 不是内部或外部命令说明 Anaconda Prompt 的快捷方式有问题通常是安装时没勾Register as default Python之外的东西被拦截了。最直接的处理是重装一遍路径保持一致一般就好了。关于anaconda prompt这个名字顺便说一句安装完成后开始菜单里会有两个类似的项一个是 Anaconda Prompt (anaconda3)一个是 Anaconda PowerShell Prompt。前者是 cmd 内核后者是 PowerShell 内核。日常用前者就行后者的执行策略更严格有些包里的脚本会被拦。3.4 配置国内镜像源这步不做后面会很痛苦默认的 conda 源都在境外装一个包要等几分钟甚至直接超时。这步必须做。先看一眼当前配置conda config --show 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/cloud/conda-forge/ conda config --set show_channel_urls yes这几条命令的副作用是往用户目录下的.condarc文件里写内容。你可以直接打开这个文件看看路径在C:\Users\你的用户名\.condarc内容大概是channels: - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/ - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ show_channel_urls: true注意channels 的顺序是有意义的conda 会从上往下找包。另外很多老教程会教你加pkgs/free这个源现在已经废弃了加上去只会在装包时多一次 404 请求拖慢速度甚至报错别再抄那个了。如果哪天你发现镜像站同步延迟某个包在镜像上没有可以临时指定官方源conda install -c defaults 包名或者干脆临时清空源列表conda config --remove-key channels用完再配回来。这种临时切源的操作在追新版本的时候很有用。pip 也要单独配一遍因为 conda 装不上的包你终究要用 pip 兜底pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple pip config set global.trusted-host pypi.tuna.tsinghua.edu.cn这两条会在用户目录生成 pip 的配置文件之后所有 pip 安装都走国内源不用每次加-i参数。4. Linux 和 macOS 下的安装配置4.1 Linux脚本安装的正确姿势服务器和开发机上我基本都用脚本方式装不用图形界面。先从镜像站下载.sh文件然后bash Anaconda3-2024.10-1-Linux-x86_64.sh回车看许可协议一路按空格翻到底输入yes表示接受然后指定安装路径。这里有个细节默认路径是~/anaconda3如果你想多个用户共用可以改成/opt/anaconda3但那样后续要注意权限。我自己都是保持默认。真正省事的是静默安装bash Anaconda3-2024.10-1-Linux-x86_64.sh -b -p $HOME/anaconda3-b是批量模式不交互-p指定路径。这条命令跑完就装好了特别适合写进自动化脚本或者部署文档里。4.2 环境变量linux设置anaconda环境变量到底怎么设这是 Linux 上问得最多的问题也是最容易配错的地方。第一反应你可能会想直接改/etc/profile或者~/.bashrc加一行export PATH/home/用户名/anaconda3/bin:$PATH。能跑但不是最优解因为它让 conda 的 base 环境在每次打开终端时自动激活会把系统的 python、pip 全部盖掉服务器上其他同事的脚本可能就崩了。正确做法是用 conda 自己的初始化命令$HOME/anaconda3/bin/conda init bash source ~/.bashrc执行完conda 会往.bashrc末尾追加一小段带标记的脚本作用是先定义conda这个 shell 函数但不自动激活任何环境。你打开终端后需要conda activate 环境名才会切换。想退出就conda deactivate回到系统的原始 Python。macOS 现在默认是 zsh把上面的bash换成zsh就行$HOME/anaconda3/bin/conda init zsh source ~/.zshrc一个常见误区是有人改了 PATH 之后发现conda init不生效因为conda init会检测你当前的 shell 配置如果 PATH 里已经有 anaconda 的 bin它可能跳过写入。所以先清掉手动加的 PATH再执行 init。另一个坑是服务器上用的是非交互式 shell比如通过某些自动化工具执行命令这种 shell 不读.bashrc所以 conda 命令找不到。解决办法是在.bash_profile里 source 一下.bashrc或者在脚本里显式写全路径$HOME/anaconda3/bin/conda。4.3 macOS 的额外注意点macOS 上可以下.pkg图形安装包双击一路下一步它会自动装到/opt/anaconda3之类的位置。也可以用.sh脚本方式和 Linux 一样。需要提醒的是从 M 系列芯片开始安装包分x86_64和arm64两种。下错了也能装但会走 Rosetta 转译层跑起来慢一截某些需要编译的包还容易失败。确认方式是在终端执行uname -m输出arm64就下 arm64 版本。5. 虚拟环境把环境隔离这件事真正做对5.1 创建、激活、退出的完整命令装好 Anaconda 只是给了你一把工具真正让它发挥作用的是虚拟环境。anaconda创建虚拟环境这个操作我建议你养成肌肉记忆。conda create -n myproj python3.10-n后面是环境名建议用项目名纯英文小写加下划线。python3.10是显式指定版本不写的话会用 base 环境的版本往往不是你要的。创建过程中会列出即将安装的包输入y确认。装完激活conda activate myproj激活成功后命令行提示符前面会出现(myproj)。这时候你敲python --version看到的才是这个环境的版本敲pip install装的也是这个环境的包。退出conda deactivate查看所有环境conda env list带星号的是当前激活的。删除环境conda remove -n myproj --all这个命令会把环境目录整个删掉不可恢复删之前确认一下自己的代码和数据不在里面正常情况代码应该放在项目目录不在环境目录里养成这个习惯。我踩过的一个坑是环境名里带了大写或者连字符在 Linux 上激活时报找不到环境。conda 对环境名的处理在不同平台上有差异统一用小写加下划线最保险。5.2 环境复现让队友一条命令还原你的环境自己用无所谓一旦要交付或者换机器环境复现就是刚需。最基础的做法conda env export environment.yml但直接导出的文件里会有一行prefix:记录你的本地绝对路径别人拿过去会在那台机器上找这个路径。所以要么手动删掉这行要么加参数conda env export --no-builds environment.yml--no-builds会去掉精确的构建号兼容性更好代价是装的包版本可能有微小差异。别人拿到文件后conda env create -f environment.yml还有一种更暴力的方式导出所有包的精确下载地址conda list --explicit spec-list.txt复现时conda create -n newenv --file spec-list.txt。这种方式最精确但强依赖源跨平台基本不可用只适合同架构同系统的机器之间迁移。我的经验是日常用 environment.yml但同时在项目里维护一个 requirements.txt。前者负责 conda 层的大依赖后者负责 pip 装的那些杂七杂八的包。只靠一个文件最后一定会漏东西。5.3 对接 PyCharm、VSCode 和深度学习框架环境建好了IDE 要指过去。PyCharm 配置。打开 Settings找到 Project Interpreter点齿轮选 Add左边选 Conda Environment再选 Existing environment然后在 Interpreter 一栏点右边那个文件夹图标定位到D:\anaconda3\envs\myproj\python.exe。确定之后PyCharm 会花几十秒索引这个环境里的包索引完你就能在里面正常 import 了。记住一定要指到环境的python.exe不是 anaconda3 根目录的。VSCode 配置。按 CtrlShiftP输入 Python: Select Interpreter从列表里选带envs\myproj路径的那个。VSCode 有个让人困惑的提示终端里会打印Warning: This Python interpreter is in a conda environment, but the environment has not been activated。这不是错误只是提示你这个终端里 conda 环境没激活代码照样能跑。如果你嫌碍眼在设置里把终端自动激活打开或者干脆在集成的 Anaconda Prompt 里操作。配置 PyTorch 环境。先建环境然后别急着conda install pytorch先确认显卡驱动支持的 CUDA 版本nvidia-smi右上角显示的CUDA Version是驱动支持的最高版本比如 12.4。然后去 PyTorch 官网的安装命令生成器选好版本它会给你一条命令形如conda install pytorch torchvision torchaudio pytorch-cuda12.1 -c pytorch -c nvidia这里要注意如果你的环境已经配了国内镜像源-c pytorch这个官方源可能会因为网络问题卡住。实际做法是加上-c指定源或者干脆用 pip 装pip 走国内源反而更稳。装完验证python -c import torch; print(torch.cuda.is_available())输出True就说明 GPU 版本装对了。输出False通常是三个原因装成了 CPU 版本、CUDA 版本和驱动不匹配、或者环境没激活。6. 常见问题排查速查表6.1 安装与环境类问题现象大概率原因处理方式conda 命令找不到未初始化 shell 或 PATH 未配用 Anaconda Prompt或执行conda init装包时报权限错误装到了受保护目录换到用户目录重装解压时报文件被占用安全软件实时扫描临时关闭实时防护环境激活后 python 版本没变激活未生效或 PATH 顺序问题检查提示符前缀用where python确认Solving environment 卡很久默认求解器效率低换用 libmamba 求解器关于最后一条值得单独说。conda 的默认依赖求解器在处理复杂依赖时非常慢有时候能跑十几分钟。解决办法是装一个更快的求解器conda install -n base conda-libmamba-solver conda config --set solver libmamba我自己实测同样的环境创建换完之后时间从几分钟降到几十秒值得花这两条命令。6.2 conda 与 pip 混用的边界这是一个容易被忽略但影响很大的点。同一个环境里不要来回用 conda 和 pip 装同一个包。conda 有自己的包元数据管理pip 装的包它不完全知情两边都装同一个库最后到底加载的是哪一份很难说清而且很容易出现conda list 里有import 却失败。我的原则是能用 conda 装的用 conda装不上的再用 pip且 pip 只在环境激活状态下用。绝对不要用conda install去装一个已经在pip list里的包也不要反过来。判断某个包该用哪个看它有没有 C 扩展。numpy、scipy 这种强烈建议 conda因为它提供预编译好的二进制省去自己编译。而一些纯 Python 的小工具包pip 就够了免得等 conda 慢慢解依赖。6.3 网络相关报错的处理CondaHTTPError: HTTP 000 CONNECTION FAILED这个报错我见得最多。表现是连包索引都拉不下来。先排查是不是镜像源地址写错了conda config --show channels看一下。再排查是不是走系统代理导致的企业网络里常见。可以让 conda 忽略代理conda config --set ssl_verify true conda config --remove-key proxy_serversProxyError通常是环境变量里有HTTP_PROXY之类的设置临时清掉当前会话的unset HTTP_PROXY HTTPS_PROXY如果某个包在镜像站上确实没有报的是 404那就临时指定官方源或者换一个镜像站。这种情况在新版本刚发布时很常见因为镜像同步有延迟等一两天就好不用折腾。7. 卸载、清理与日常维护习惯7.1 干净卸载的正确顺序anaconda卸载这件事最忌讳的是直接删安装目录。这样做会留下一堆残留.condarc、.conda目录、开始菜单快捷方式、注册表项还有.bashrc里那几行conda init写进去的脚本。下次再装这些残留会和新的配置打架。Windows 上的正确做法是运行安装目录下的卸载程序通常在Uninstall-Anaconda3.exe。跑完之后还要手动检查三处用户目录下的.conda和.condarc、环境变量里的 anaconda 相关项、开始菜单里的快捷方式文件夹。Linux 上更简单一些rm -rf $HOME/anaconda3然后手动编辑.bashrc把conda init那段带# conda initialize 标记的整块删掉最后清掉配置目录rm -rf $HOME/.conda $HOME/.condarc顺序上先删安装目录再清配置或者反过来都行关键是三样都别落下。少清一样下次装的时候八成要出问题。7.2 我在实际使用中养成的几个习惯给环境做版本标注。环境名后面别只写项目名加个 Python 版本或者框架版本比如recsys_py310。半年后你回来翻一眼就知道这个环境是干什么的不至于不敢删也不敢用。定期清理没用的环境和不用的包缓存。conda 的包缓存目录会越滚越大装得多了能占十几 G。清理命令是conda clean -a它会删掉没被任何环境引用的包压缩包和索引缓存。我一般一个月跑一次能释放几个 G 的空间。跑之前确认没有环境在安装过程中不然会出问题。base 环境保持干净。base 环境只放 conda 本身和必要的工具不要往里面装任何项目依赖否则你的 base 会被越撑越乱而且容易和子环境冲突。我见过有人所有包都装 base最后建虚拟环境反而比不建还乱。环境目录和代码目录分开。代码放 Git 仓库环境放 conda 的 envs 目录两者不要混在一起。这样删环境不会有心理负担换机器也只需要改环境代码原封不动。最后再分享一个排查思路。遇到任何奇怪的导入错误或者版本冲突第一件事永远是执行conda list和which pythonWindows 用where python确认你当前用的解释器到底是哪个环境的那个环境里到底装了什么。我遇到的九成诡异问题根因都是我以为我在用 A 环境实际跑在 B 环境。环境切换这件事多敲一次确认命令比猜测快得多。