ARTICLE DETAIL

资讯详情

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

Anaconda安装卡住?从网络到虚拟环境创建的全流程排查指南

Anaconda安装卡住?从网络到虚拟环境创建的全流程排查指南 先说我自己的一个真实经历。去年帮同事处理一台Windows笔记本安装Anaconda装到一半进度条停在“Setting up the base environment”就再也不动了。风扇呜呜转任务管理器里网络流量却是0CPU占用也不高看起来像是卡死了但又没完全死界面还能动。我一开始也以为是安装包坏了专门重新下载了一遍用管理员权限重新双击安装折腾了整整一下午问题依旧。后来换了个思路从“安装程序这一步到底在干什么”入手十分钟就定位到了真实原因。这篇文章就把我这些年遇到的各种“卡住”情况从安装阶段到创建虚拟环境阶段全部整理成一套可复用的排查思路和解决办法给同样被Anaconda卡到怀疑人生的朋友一个参考。1. 先搞清楚Anaconda安装和创建环境时系统到底在跑什么很多人一遇到卡住就怀疑是电脑配置不行或者安装包有问题但其实Anaconda安装过程远比“复制文件”复杂。你要先明白它背后做了什么才能知道卡在哪个环节。1.1 安装程序的两段式工作流程Anaconda安装从你双击安装包开始其实分为两个完全不同的阶段。第一阶段是把安装程序自身需要的文件释放到临时目录并且把Python解释器、conda基础组件解压到目标路径。这一阶段主要依赖磁盘读写一般不会太慢除非你是机械硬盘或者C盘快满了。第二阶段是安装程序调用自带的conda去配置base环境。这一步才是真正的重头戏。它会读取默认的channel配置尝试连接Anaconda官方仓库获取base环境的依赖信息和包文件。如果你的网络访问官方源很慢或者根本连不上安装进度条就会长时间停在某个位置不推进。第二阶段的本质等于是在安装过程中偷偷执行了一次“conda create -n base”的操作。理解了这一点很多问题就迎刃而解。1.2 卡住的位置不一样原因完全不一样我整理了一个规律大部分卡住场景可以通过“卡在哪一步”来判断病根卡住时的界面表现实际卡住的环节最可能的根因进度条停在Preparing transaction安装程序准备文件事务杀毒软件实时扫描、磁盘权限不足进度条停在Setting up the base environmentconda联网配置base环境网络连不上官方源、镜像配置异常创建环境时卡在Solving environment依赖解析阶段solver算法太慢、channel太多创建环境时卡在Downloading and Extracting下载包阶段外网源太慢、线程数不稳创建环境时卡在Linking链接包到虚拟环境目录杀毒软件扫描、Windows文件锁这个表格建议收藏。很多人在论坛求助时只说“装到一半卡住了”或者“创建环境卡住了”但其实这两类问题的处理路径完全不同。不先判断卡在哪个环节盲试各种方案大概率是浪费时间。2. 安装阶段卡死的定位流程按这个顺序排查省下两个小时真正动手排查的时候我强烈建议你按固定顺序来不要东一下西一下。下面是我的实际排查顺序每一步都有明确的验证方法。2.1 网络联通性安装程序卡住的头号真凶关于安装Anaconda特别是Windows新版安装包最容易踩的坑就是安装程序在第二阶段要联网下载包。如果你的网络不能顺畅访问Anaconda官方仓库安装就会停很久。先做个测试打开浏览器访问https://repo.anaconda.com/archive/看能否正常打开。如果再配一个命令行测试ping repo.anaconda.com如果ping不通或者浏览器打开极慢基本可以断定是网络问题。我实际遇到过的情况是浏览器能打开但安装程序一样卡死因为conda在解析包索引时对网络延迟极其敏感稍微慢一点就会产生很长的等待。这时候不要硬等我给你的建议是直接关掉安装程序不要继续耗。硬等半小时以上成功率也不高而且容易在C盘留下残缺的临时文件。提示如果在公司网络或者校园网环境可能是防火墙对Anaconda的域名做了限制。这种情况下即使安装成功后面创建虚拟环境一样会卡所以要先解决网络源的问题。2.2 关掉安全软件尤其是Windows Defender实时保护在我处理过的安装卡住案例里排名第二的原因就是杀毒软件。安装Anaconda时安装程序要往系统里写入大量文件还要创建多个软链接。杀毒软件会对这些文件逐个扫描如果是Windows Defender的实时保护开启状态扫描量巨大有时候会直接把安装事务拖到近乎停滞。我的处理办法是安装期间临时关闭Windows Defender的实时保护等安装完成后再重新打开。操作路径是“设置 - 隐私和安全性 - Windows安全中心 - 病毒和威胁防护 - 管理设置 - 实时保护”关闭即可。如果是第三方杀毒软件比如360、火绒、腾讯管家之类安装时最好临时退出。这不是玄学我实测过许多次退出杀毒软件后原来卡了20分钟的“Executing transaction”阶段3分钟就跑完了。注意关闭杀毒软件后安装包本身一定要从官方渠道下载确保文件hash一致避免安装到被篡改的安装包。2.3 安装路径和用户名的硬性门槛这一条可能很多新手不知道但老手基本都遇到过。Anaconda对路径非常敏感。安装路径不能有中文字符不能有空格更不能包含特殊符号。千万别装到D:\软件\Anaconda3这种目录下要装就用纯英文路径比如D:\Anaconda3或C:\Users\yourname\anaconda3。还有一个隐藏的比较深的坑Windows用户名如果包含中文比如C:\Users\张三\Anaconda3安装器在配置环境变量和路径映射时会出现异常表现就是安装进度卡住或者安装成功但conda命令都用不了。判断方法很简单打开文件资源管理器看当前用户文件夹路径里有没有非英文字符。如果有建议你新建一个英文管理员账户用新账户安装。磁盘空间方面Anaconda完整安装通常需要3GB以上空间。如果C盘空间不足1GB安装进程很可能在写文件阶段看起来像卡死。安装前先在“设置-系统-存储”里看一眼剩余空间低于2GB就先清理。2.4 安装包缓存和旧版本残留如果你曾经安装过Anaconda或Miniconda后来卸载了但没有清理干净再装新版时也可能出现“卡死”现象原因是旧版本的残留服务或环境变量干扰。这时候我建议先检查环境变量echo %PATH%看里面有没有残留的conda路径。如果有先清理掉。还可以删除旧版本留下的配置目录# 用户目录下的 .conda 目录 C:\Users\用户名\.conda # Anaconda 配置目录 C:\Users\用户名\.condarc删除前先备份确认没有重要数据。这条清理完很多莫名其妙的卡死问题直接消失。3. 虚拟环境创建卡住问题比安装更隐蔽安装阶段过了之后另一座大山就是创建虚拟环境卡住。conda create -n myenv python3.9这条命令敲下去之后很多人的屏幕就定格在“Solving environment”或者“Collecting package metadata”上一等就是半小时。这个卡住的原因和安装卡住有很大不同。安装卡住主要是网络而创建环境卡住往往要深挖conda的机制。3.1 “Solving environment”到底在解什么conda创建新环境时要先解决一个“依赖满足问题”。你要装Python 3.9conda就要去所有配置的channel中搜索所有兼容的Python版本、pip、setuptools、wheel等基础包然后根据依赖关系计算出一套互不冲突的组合。别小看这个计算过程。conda的经典solver求解器是基于SAT算法的当channel列表很长、包版本很多时这个解析过程的时间复杂度会急剧上升。尤其是你用conda-forge这类巨型channel时解析速度慢是正常的。我遇到过一个极端案例一个机器上配置了defaults、conda-forge、bioconda、pytorch四个channel执行创建环境的命令后“Solving environment”整整跑了45分钟没出结果。后来把solver换成libmamba45秒就完成了。3.2 默认源访问慢为什么不配镜像源就必然会卡conda默认访问的是repo.anaconda.com这个官方源。国内访问这个源速度很慢而创建虚拟环境时要拉取的是索引文件和安装包这种网络状况下卡住是大概率事件。很多人问我“为什么我安装包的时候没卡创建环境就卡了”原因在于Anaconda安装包本身已经把base环境的包打包进去了所以安装时可以基本不依赖网络或者对网络依赖很小。但创建新环境时conda默认要走网络去下载指定的Python版本和相关包网络源慢的直接后果就是长时间卡在下载或解析阶段。解决思路非常明确配置镜像源。国内用得最多且稳定的是清华大学开源软件镜像站。3.3 卡在“Downloading and Extracting Packages”要区分是慢还是断有时候你看到包在下载但速度极慢看一下每秒只有几KB这其实不能叫“卡住”只能叫“慢”。真正的卡住是进度完全不动或者等了很久还在同一个小包上。判断是不是断连的方法看任务管理器的网络占用率。如果网络占用率一直是0很大概率是连接已经断了conda在等待超时。如果网络占用率有波动但极低那就是单纯慢。针对这种情况设置一个超时时间是有用的conda config --set remote_connect_timeout_secs 30 conda config --set remote_read_timeout_secs 600其中remote_connect_timeout_secs是连接阶段超时设太短容易在弱网环境误判remote_read_timeout_secs是读取数据阶段的超时设成600秒比较稳妥。4. 立竿见影的解决套路换源、换求解器、降级安装下面这套组合基本能解决90%以上的安装卡住和创建环境卡住问题我管它叫“三板斧”。每一板都有明确目的不要跳步骤。4.1 配置清华镜像源写进.condarc文件先在命令行执行一条命令让conda生成配置文件conda config --set show_channel_urls yes然后编辑用户目录下的.condarc文件Windows是C:\Users\你的用户名\.condarcLinux/macOS是~/.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 - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2 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 pytorch-lts: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud配置好之后清理索引缓存conda clean -i这一步很重要。如果你之前已经访问过官方源conda本地会有缓存索引不清理的话它还会拿旧索引去解析镜像源起不到作用。注意conda clean -i清的是索引缓存不要和conda clean --all混淆后者会把下载的包缓存也清掉下次创建环境需要重新下载所有包。4.2 换用libmamba求解器彻底解决“Solving environment”卡住前面说了conda自带的经典solver在大channel场景下解析速度极慢。从conda 22.11版本开始官方把libmamba solver集成进来了性能和速度是质的飞跃。如果你的conda版本较新可以直接执行conda config --set experimental_solver libmamba更新版本的conda23.10可能用的是这个参数conda config --set solver libmamba设置完成后重新执行conda create -n myenv python3.9你会发现原来要等半小时的“Solving environment”现在几秒就过了。我在自己电脑上实测一个包含pytorch、numpy、pandas的环境原来解析耗时约8分钟切换libmamba后只要40秒左右。如果当前conda版本太老没有libmamba选项建议先把conda更新到较新版本conda update conda4.3 终极底牌改用Miniconda如果以上方法都试过还是卡我建议你果断放弃完整版Anaconda改用Miniconda。Miniconda体积只有几十MB安装过程非常快完整版Anaconda里预装的上百个科学计算包在Miniconda里都没有你需要什么再手动conda install什么。这个方法特别适合碰到安装卡住、且又不想折腾网友方案的人。原因很简单完整版Anaconda安装时卡住很大程度就是因为它在尝试联网配置base环境并拉取预装包Miniconda默认环境只包含conda本身和最小依赖几乎不需要从远程拉取大文件自然不容易卡。安装Miniconda后你仍然可以用conda create -n myenv python3.9创建虚拟环境配合上面的镜像源和libmamba体验非常顺滑。5. 绕开conda也能建环境的备选路径有些场景下你确实可以先不折腾conda用Python自带的venv也能满足需求。5.1 用venv建环境轻量、干净、零依赖如果你的Anaconda已经安装成功只是conda创建虚拟环境一直卡住那可以先用venv应急。比如你系统里已经有Python 3.9的解释器目录可以直接python -m venv myvenv然后激活# Windows myvenv\Scripts\activate.bat # Linux/macOS source myvenv/bin/activatevenv不具备conda那种“指定不同Python版本”的能力它只能基于当前已存在的Python解释器创建环境。但当conda暂时不可用时作为一个应急方案非常靠谱它不会污染全局环境也不需要网络下载任何东西。5.2 清理锁文件和残留进程一个经常被忽视的“隐性卡住”最后分享一个很隐蔽的问题。如果你之前创建环境时卡住过然后用CtrlC强制中断了conda可能会在pkgs或envs目录下留下锁文件。这个锁文件会导致后续所有 conda 操作都异常缓慢甚至直接无响应。常见现象运行conda create后看不到任何输出也没有报错就是一直停着。排查方式# Windows dir %USERPROFILE%\.conda\pkgs\ # Linux/macOS ls -la ~/.conda/pkgs/看到类似.lock后缀的文件就手动删除。锁文件删除后conda的后续操作会恢复顺畅。我在实际处理中还遇到过一种情况conda进程其实还残留在后台Windows下是python.exe进程它占着文件锁没释放导致新命令一直等待。这时候打开任务管理器把所有python.exe相关进程都结束再重新执行命令立刻就好了。5.3 安装和创建都正常后怎么验证环境确实没问题按照我的习惯新环境建好之后会做两个快速验证conda env list这个命令确认新环境在列表里。然后激活环境后查看Python版本conda activate myenv python --version如果Python版本和预期的完全一致说明这个环境是健康的。接着可以顺手执行以下命令确认包管理器工作正常conda list如果conda list能正常输出包清单说明conda本身与环境的关联状态是完好的。最后再补一点和PyCharm相关的经验因为不少人在PyCharm里选择Anaconda虚拟环境的解释器时也会“卡住”或报错。其实很多时候不是真的卡住而是PyCharm在扫描conda环境列表时要执行conda命令如果你机器上的conda源访问慢PyCharm的扫描过程就会表现为长时间转圈。解决思路和我上面写的一致先把conda本身配好让conda env list命令在命令行里流畅运行PyCharm这边自然就正常了。如果还是慢直接在PyCharm里手动添加解释器路径指向envs\myenv\python.exe即可。6. 写在最后这些操作顺序是我反复验证过的我从最早自己被困在安装进度条到后来帮不同的人处理类似问题逐渐整理出一套顺序先判断卡在哪个阶段再依次排查网络、杀毒软件、路径、残留、缓存、solver。这套顺序不保证每次都一步到位但能确保你不做无用功。结合我的个人经验有几条建议再啰嗦一遍安装Anaconda前先把杀毒软件退出装好后再开启。这是成本最低但效果最明显的一个动作。安装包永远从官网或者可信镜像下载不要图方便用来源不明的网盘包。conda clean -i配合镜像源配置是创建环境卡住的黄金组合记得要一起做。一旦出现创建环境卡住的情况不要反复按CtrlC重试先检查锁文件、检查后台python进程确认没有残留再重试。最后再分享一个小技巧如果你需要经常创建环境又嫌conda的源偶尔不稳定可以把pkgs_dirs配置到一个固定目录并且用conda pack把常用的基础环境打包成离线包。以后想快速复现环境时直接解压设置路径全程不碰网络也就不存在“卡住”这个说法了。希望这篇文章能帮你一次性解决Anaconda安装和虚拟环境创建的烦恼。
返回列表