多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

Anaconda完整安装指南:从下载校验到虚拟环境配置与报错排查

Anaconda完整安装指南:从下载校验到虚拟环境配置与报错排查 最近在搭一套数据处理实验环境要把Python连同numpy、pandas、matplotlib这些科学计算包一次性装好。组里的习惯是把Anaconda简称为Annoar所以这份实验记录的标题我沿用这个叫法。这篇文章就是一次完整安装Anaconda的记录从下载、校验、安装选项到虚拟环境配置、常见报错排查全部按实际操作顺序写下来。如果你正要装Python环境或者已经装上但遇到各种奇怪问题这份记录应该对你有用。1. 实验环境与安装方案选型1.1 这次实验到底要解决什么问题先说清楚背景不然很多选择你看着会很迷惑。我手头这台机器是实验室的工作站Windows 11 专业版 22H264位内存16GBC盘是一块256GB的SSDD盘是1TB的机械硬盘。机器上之前已经有人装过Python 3.8还零零散散装了一些包但版本特别乱。我这次的任务是复现一个数据处理流程要用到numpy、pandas、matplotlib、scikit-learn最好还要有Jupyter Notebook代码是组里师姐写的她用的是Python 3.11。问题一下子就来了直接在系统全局pip install很可能把已有的Python 3.8环境弄崩而且pip在装scikit-learn这种带编译产物的包时经常因为依赖冲突装一半报错。我需要的是一个“装的时候不污染系统、用的时候能随时切换”的Python环境。这时候最省事的方案就是在机器上安装Anaconda发行版也就是我们组的Annoar。Anaconda本质上是一个Python发行版它内置了conda这个包管理器和环境管理器同时预装了600多个常用数据科学包。装完以后我可以创建任意多个互相隔离的Python环境比如一个给Python 3.11的项目A一个给Python 3.9的老项目B两个环境互不干扰。对于“实验记录”这种需要重复复现结果的场景这个能力特别重要。1.2 为什么是Anaconda而不是别的方式在定方案之前我把四种常见的Python环境搭建方式拉了个表对比了一遍。这个对比过程本身也值得记录因为不同场景下的最优解完全不一样。方案优势劣势适合场景裸Python pip轻量系统自带或几百MB搞定依赖冲突严重不同项目互相污染只需要一两个包、不折腾环境的场景Miniconda体积小conda核心功能完整所有包都要自己装新手容易迷路老手、磁盘紧张、需要完全可控Anaconda开箱即用600常用包环境隔离做到位安装包大占用空间3GB以上数据科学/实验环境追求省心Docker容器隔离彻底环境可复现程度最高虚拟化开销Windows下体验一般镜像大部署、多人协作、跨平台复现我最后选了Anaconda原因很直接这台机器主要是做实验不在乎多占几个GB磁盘省心比省空间重要。实验记录讲究“环境可复现”conda的environment.yml可以把依赖全量导出换台机器一条命令还原这个能力后面会用到。师姐的代码用的是Python 3.11Anaconda近期版本默认就是3.11系列匹配度很高。如果你是给生产环境搭服务我反而建议用Docker或者Miniconda没必要把Anaconda拖进生产环境里。但实验场景Anaconda就是最舒服的选择。1.3 版本选择不是随便点的Anaconda的版本号很有意思它不是按1.0、2.0这样递增而是按年份加月份命名比如2023.09、2024.02。每个版本会绑定一个默认的Python版本。选版本的时候有一个原则除非你需要的老包不兼容新Python否则直接选较新版本。我这次下载的是Anaconda 2024.02-1默认Python 3.11。选择它的原因是scikit-learn在Python 3.11上的兼容性已经很稳定而2023.09及之前的版本默认还是Python 3.10甚至3.9对一些新版本的pandas语法支持没那么好。如果你要复现的是一个老项目依赖的是老版TensorFlow那就要去Anaconda的archive页面找历史版本对应下载而不是一味求新。怎么确认某个包是否兼容你的Python版本我的习惯是先去Anaconda官方release notes看默认Python版本再去包的官方文档看Python版本支持范围两个交集就是你该选的Anaconda版本。这一步我提前做了十来分钟省得后面环境装到一半发现某个核心包装不上那才是真正的折腾。2. 安装包下载与完整性校验2.1 下载渠道官网和镜像站怎么选确定版本后就是下载安装包。Anaconda的官方下载地址是www.anaconda.com/download页面会根据操作系统自动推荐安装包。我这台机器是Windows x64对应的是Anaconda3-2024.02-1-Windows-x86_64.exe文件体积大约700MB。实际下载的时候官网服务器的速度很不稳定我第一次用浏览器直接下载速度只有几十KB/s按这个速度要下三个多小时完全没法接受。从实际经验出发国内用户更靠谱的选择是各大高校镜像站。我用的是清华TUNA镜像路径是mirrors.tuna.tsinghua.edu.cn/anaconda/archive/这个目录下会按文件名列出所有历史版本。进入后找到Anaconda3-2024.02-1-Windows-x86_64.exe直接下载速度能跑到5MB/s以上一分钟左右就下完了。还有一个更快的办法在镜像站页面直接右键复制下载链接扔给IDM或者aria2这些支持多线程断点续传的下载工具速度还能再翻倍。浏览器内置下载器遇到网络波动容易断断了一次就要从头再来非常难受。2.2 完整性校验不是走形式很多人下载完安装包直接双击安装我不建议这么干。如果安装包在下载过程中损坏安装过程会出现莫名其妙的错误比如解压到一半报错、装完conda命令无法识别等等。所以实验记录里我养成了一个习惯安装前先校验安装包哈希值。Windows下校验SHA256有两种常用方式在PowerShell里执行Get-FileHash .\Anaconda3-2024.02-1-Windows-x86_64.exe -Algorithm SHA256在CMD里执行certutil -hashfile .\Anaconda3-2024.02-1-Windows-x86_64.exe SHA256两条命令会输出一长串64位的十六进制字符串然后用这个字符串和官网页面提供的SHA256比对。官网下载页和TUNA镜像页的每个文件旁边都会有对应的哈希值。我这次下载的文件校验出来的哈希值和镜像站提供的完全一致这就说明文件没有损坏也没有被篡改可以放心安装。2.3 下载过程踩过的两个坑这次下载虽然最后顺利但中间踩了两个坑写在这里供参考。第一个坑是浏览器下载中断。刚开始我用Edge直接下载下载到一半办公室网络抖动浏览器直接提示“下载失败”。由于安装包有700MB重新下载的时间成本太高。这时我想到用下载工具接管复制了下载链接扔进IDMIDM通过断点续传从上一次中断的位置继续下载省了一大半时间。所以在下载大安装包前提前准备好一个支持断点续传的工具属于必要的装备。第二个坑是Windows SmartScreen拦截。下载完成后双击安装包系统弹出一个蓝色警告窗口提示“Windows已保护你的电脑”。这个情况属于正常现象因为Anaconda的安装程序没有微软的数字签名认证SmartScreen会把它当未知程序拦截。处理办法是点击“更多信息”然后选择“仍要运行”。前提是你确认安装包是从官方或可信镜像站下载并且哈希校验一致否则这个警告确实是危险信号。3. 安装过程逐步执行3.1 安装前准备关闭实时防护和规划路径双击安装包之前我先把Windows Defender的实时保护临时关闭了。原因很现实安装Anaconda的过程中会往磁盘写入大量小文件实时防护会对每个新写入的文件做扫描安装速度会明显变慢个别杀毒软件还会把conda的某些可执行文件误报为威胁。关闭方式Windows安全中心 - 病毒和威胁防护 - 管理设置 - 关闭实时保护。装完以后记得重新打开。然后就是路径规划。Anaconda默认安装到C:\Users你的用户名\anaconda3但如果C盘空间紧张建议改到其他盘。我这台机器C盘只剩不到30GB所以我把安装路径改成D:\Anaconda3。这里说一个经验性的建议路径一定不要包含中文和空格也尽量不要装在Program Files这种系统保护目录下否则后续创建虚拟环境、编译一些包的时候权限问题会非常烦人。纯英文、短路径、盘符随意这是最稳的。3.2 安装选项逐项拆解安装过程有一个“Advanced Installation Options”页面很多人会直接点Next跳过结果后面遇到一大堆问题。我把四个关键选项逐个拆开讲清楚。Installation Type有“Just Me”和“All Users”两个选项。我选“Just Me”理由是不需要管理员权限所有文件都写在用户目录下权限问题最少。多人共用的机器如果想全局可用可以选“All Users”但后续安装包要装到系统目录容易触发UAC弹窗。Destination Folder就是前面说的安装路径。我填的是D:\Anaconda3。Add Anaconda3 to my PATH environment variable这个选项特别关键。PATH是Windows用来查找命令的环境变量如果勾选以后打开CMD或PowerShell就能直接输入conda命令。不勾选的话只能在开始菜单里的Anaconda Prompt里使用conda。官方默认不推荐勾选因为会把Anaconda自带的Python放到PATH最前面可能和系统里已有的Python冲突。我这次选择了勾选因为这台机器是专用实验机我把“直接用conda命令”看得比“避免潜在冲突”更重要。Register Anaconda3 as my default Python 3.x这个选项的作用是把.py文件的默认打开程序关联到Anaconda的Python同时让其他程序把Anaconda的Python当成系统默认Python。我取消了这个选项的勾选因为机器上还有其他Python环境我不想在命令行输入python的时候被导向Anaconda导致旧脚本跑不了。以上四个选项选完点Install安装过程就开始了。我的机器上大概跑了6分钟左右主要耗时在解压600多个包整个过程没有需要人工干预的地方。3.3 安装完成与首次启动验证安装完成后开始菜单会出现Anaconda Prompt、Anaconda Navigator、Jupyter Notebook等几个快捷方式。但验证安装不能只看图标出现要用命令确认环境真实可用。因为我勾选了Add to PATH直接打开CMD或PowerShell依次执行以下命令conda --version python --version conda env list输出结果分别是这样的conda 24.1.2 Python 3.11.7 # conda environments: # base * D:\Anaconda3看到conda版本号、python版本号正确base环境存在且带星号说明安装成功。再顺手验证一下核心科学计算包能不能导入python -c import numpy, pandas, matplotlib; print(core packages ok)如果输出core packages ok那么Anaconda的安装环节就彻底完成了。如果你是“不勾选PATH”那类用户也没关系打开Anaconda Prompt输入一模一样的命令即可Anaconda Prompt会临时把conda的环境变量注入当前窗口。4. 安装后的环境配置4.1 换源不是玄学原因很实际Anaconda装好以后的第一件事不是急着创建环境而是先配conda镜像源。这里说的“源”指的是conda下载包的软件仓库地址。默认情况下conda从repo.anaconda.com拉取软件包元数据这个服务器在美国从国内访问速度很慢经常出现下载超时或者几百KB每秒的情况。解决方案是换成国内镜像源。我个人最常用的是清华TUNA和阿里云两者都可以。这里给出清华源的配置方法在CMD或PowerShell里执行三行命令conda config --set show_channel_urls yes 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/执行后会生成一个配置文件C:\Users你的用户名.condarc。如果想直接编辑文件而非命令行文件内容可以是下面这个结构channels: - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ show_channel_urls: true这里我要提一个坑tuna还提供了另一个路径anaconda/cloud那是给conda-forge等社区渠道用的如果你要装conda-forge的包需要额外配置custom_channels而不是直接把cloud路径加进channels。我第一次配的时候把路径写错导致conda报404后来才搞清楚两个路径的区别。pip源也建议一起换了方法很简单pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple换了源之后安装包的速度体感能从几十KB/s到几MB/s这一步对后续所有实验都受益。4.2 创建虚拟环境是必须养成的习惯Anaconda自带的base环境可以理解为一个“出厂默认环境”。我在base环境里尽量不装任何实验依赖而是为每个具体项目创建一个独立环境这样才能避免“今天装A包升级了numpy明天B项目就崩了”这种经典事故。创建环境使用conda create命令。我这次给数据处理项目创建了一个名叫exp_env的环境指定Python 3.11conda create -n exp_env python3.11 pip这里有两个细节说明一下。-n参数是name的缩写后面跟环境名。python3.11表示指定创建环境时安装的Python版本。pip是额外指定的包因为虽然conda也能装包但很多开发包的最新版本在PyPI上更新更快pip仍然是不可替代的工具。创建过程会显示“Proceed ([y]/n)?”输入y并回车。环境创建完成后激活它conda activate exp_env激活成功后命令行前面会多一个(exp_env)前缀用来提示你当前处于哪个环境。接着安装实验依赖pip install numpy pandas matplotlib scikit-learn jupyter安装过程会打印每个包的下载进度我用清华pip源大约2分钟装完。然后再运行一次验证python -c import numpy, pandas, sklearn; print(project env ready)一切正常。后面每次做实验前先conda activate exp_env再启动Jupyter或运行脚本就不会污染系统环境了。4.3 让IDE用上这个解释器光有命令行环境还不够实际写代码还是得靠IDE。我目前主力用的是VS Code这里记录一下怎么把Anaconda的虚拟环境接入IDE。VS Code的操作非常直接打开项目文件夹后按CtrlShiftP打开命令面板输入“Python: Select Interpreter”回车后会出现一个解释器列表里面会自动识别Anaconda的base环境和所有conda虚拟环境。我直接选择exp_env即可。如果列表里没有自动识别可以点“Enter interpreter path”手动输入D:\Anaconda3\envs\exp_env\python.exe。如果你用的是PyCharm步骤稍微多一点File - Settings - Project - Python Interpreter - Add Interpreter - Choose “Conda Environment” - Select “Existing environment” - 在列表里找到exp_env。如果PyCharm社区版没自动识别conda也可以在“Conda executable”里填入D:\Anaconda3\Scripts\conda.exe。配置完解释器以后在IDE里运行脚本、调试代码都会自动使用exp_env环境不会再出现“命令行能import但IDE里报ModuleNotFoundError”这种尴尬情况。5. 常见问题与排查技巧实录5.1 conda不是内部或外部命令怎么办这是所有Anaconda安装相关文章里出现频率最高的报错。在CMD里输入conda --version提示“conda 不是内部或外部命令也不是可运行的程序或批处理文件”。原因有两个安装时没有勾选Add to PATH或者PATH环境变量配置顺序不对。如果你的情况是安装时没勾选PATH有两个解决办法。方法一推荐打开“Anaconda Prompt”执行命令conda init cmd.exe这个命令会在你的用户环境变量里自动追加Anaconda相关路径完成后重新打开CMDconda命令就能用了。PowerShell用户对应的是conda init powershell。方法二手动右键“此电脑”- 属性 - 高级系统设置 - 环境变量 - 在用户变量的Path里手动添加三个路径D:\Anaconda3、D:\Anaconda3\Scripts、D:\Anaconda3\Library\bin。注意路径要和你的实际安装路径一致。手动添加的时候一定要仔细不要把已有路径删掉否则其他命令也会跟着失效。5.2 安装卡在“Setting up the base environment”安装Anaconda的过程中进度条长时间停在“Setting up the base environment”这一句这是又一个高发问题。我第一次在另一台旧机器上装的时候就卡在这里半个多小时。这个问题的本质是Anaconda的安装包虽然已经包含了base环境的文件但安装程序在部署阶段仍然会尝试联网获取一些元数据。如果网络状况差这个阶段就会长时间无响应。解决办法有三个安装前断开网络让安装程序只使用安装包内自带的内容完成部署。这是最直接有效的方法安装完成后联网再配置源。关闭所有杀毒软件和Windows Defender实时保护避免安装程序写入文件时被杀毒软件反复扫描。确认选择了“Just Me”安装模式避免UAC权限方面的问题。如果你卡在这个阶段很久不要无脑等直接取消安装断网重试大概率几分钟就过。5.3 换源后依然CondaHTTPError配置了清华源之后安装包时仍然报CondaHTTPError这类问题的排查价值最高。常见的三种情况第一种是.condarc文件格式错误。yml格式对缩进和冒号后的空格特别敏感建议不要手敲直接用conda config命令生成或者复制镜像站官方给的模板。第二种是缓存了旧索引。换源之后conda会把新的channel索引缓存到本地如果之前的缓存损坏就会报HTTP错误。清理缓存再试conda clean -i第三种是channel路径不对。再次强调tuna的pkgs/main、pkgs/free是conda主渠道的镜像路径cloud是conda-forge等社区渠道的路径把它们混在一起会导致404。用下面这个命令查看当前生效的channel列表conda config --show channels确认输出只有pkgs/main和pkgs/free这类有效路径即可。5.4 PowerShell下conda activate失败有人在CMD里conda activate用得好好的换到PowerShell就报错提示“activate”不是可识别的cmdlet或者提示“无法加载文件因为在此系统上禁止运行脚本”。这其实是PowerShell的执行策略限制。默认情况下Windows PowerShell的执行策略是Restricted禁止运行.ps1脚本而conda内部就是靠.ps1脚本切换环境的。解决办法是以管理员身份打开PowerShell执行Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser执行后输入Y确认。这样就只对当前用户放宽执行策略允许运行本地签名的.ps1脚本系统安全性影响很小。完成后再重开PowerShellconda activate即可正常使用。5.5 安装完Python版本还是旧的装完Anaconda后在CMD里输入python --version输出的还是系统原来那个Python 3.8甚至提示“python不是内部或外部命令”这也是PATH路径顺序导致的。Windows执行命令时会按PATH环境变量里的顺序从前往后查找。如果系统Python的路径排在Anaconda路径前面系统就会优先执行旧Python。排查这个问题的命令where python这条命令会把PATH中所有python.exe的实际路径按优先级列出来。如果你希望CMD默认用Anaconda的Python可以按5.1里的方法调整PATH顺序把Anaconda三个路径放到最前面。但我的实际建议是不要全局改排序而是每次用conda activate进入虚拟环境以后再执行pythonconda会在当前会话中自动把环境的Python路径放到最前面这样既干净又不会影响其他程序。5.6 卸载重装不能只删文件夹最后记录一个卸载问题。有点时候环境装乱了想重装Anaconda如果有人直接去D盘把Anaconda3文件夹删掉那我劝你停手。这样的卸载方式会留下大量残留再次安装时会出现各种奇怪的路径冲突。正确的卸载流程是先清理配置在Anaconda Prompt中执行conda install anaconda-clean anaconda-clean --yes这个命令会把用户目录下的.condarc、.conda等配置文件备份并清理掉。然后去Windows“设置 - 应用”里找到Anaconda执行正式卸载程序。最后再手动检查C:\Users你的用户名目录下是否还有.conda、.condarc、.anaconda这些残留文件夹有就删掉。按这个顺序卸载后再重装基本不会遇到残留问题。我在实际安装和调试Anaconda的过程中最大的体会是这个工具90%的问题出在“路径”和“镜像源”这两个点上路径决定conda能不能被找到、用哪个Python镜像源决定包能不能下下来、速度够不够快。只要把这两点想清楚安装过程基本就顺畅了。最后再分享一个小习惯每次装完一套基础环境我会顺手把虚拟环境的依赖导出一个备份文件把命令记录下来conda env export environment.yml pip freeze requirements.txt这样就算以后重装系统或者换机器也能用一条命令把这个实验环境原地复现出来。希望这份实验记录能帮你少走一些弯路。
返回列表