Conda环境卡死?重启大法拯救崩溃主包
事情的起因是这样的主包在GitHub下载了一个开源项目并在VSCode中完成了初步的推理测试。当准备进行单步调试时突然意识到自己是通过解压缩方式而非git命令下载的代码主包更喜欢这种修改痕迹直观可见的方式。于是删除了原有代码改用git方式重新下载。然而再次进入开发环境时就出现了以下情况激活环境时遇到卡死问题终端无法换行或输入。正常情况下应在第二行显示带括号的环境名如下图所示但当前终端始终停留在第一行无法继续操作。主包不断删除并重建终端试图修复问题但每次新建终端后都会立即变成以下状态情况变得有些异常突然出现了conda-hook.ps1文件主要程序包对此感到困惑完全不清楚这个文件的用途。主包无奈之下只好向AI求助。AI给出的诊断是PowerShell正在执行conda-hook.ps1脚本但conda activate命令未能完整执行 终端当前卡在PS D:\Code\DexiNed (D:\Anaconda3\shell\condabin\conda-hook.ps1) ; (conda activate sketch_gpu_new)说明PowerShell profile / conda 初始化异常或者conda-hook.ps1执行被阻塞或环境损坏或 PowerShell 执行策略问题这是 Windows 下 Conda PowerShell 很常见的问题。1方法一打开Anaconda Prompt不要用 PowerShell。开始菜单搜Anaconda Prompt然后执行conda init powershell正常应该看到modified ... For changes to take effect, close and re-open your current shell. 然后完全关闭 VSCode重新打开。再测试conda activate sketch_gpu_new笑死主包打开Anaconda Prompt后界面一片空白一个字都不显示。不过主包心态稳得很立马开始了第二轮尝试真有你的2方法二检查 PowerShell profile在 PowerShell 输入$PROFILE通常会得到C:\Users\你的用户名\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1打开notepad $PROFILE看看里面是不是有奇怪内容。尤其是( D:\Anaconda3\shell\condabin\conda-hook.ps1)如果有重复初始化、乱码、残缺代码。直接全删掉保存。然后重新conda init powershell当主包运行命令notepad $PROFILE后出现如下报错后面按照AI的指示又断断续续的在 PowerShell中进行尝试结果还是不行哈哈哈哈3第三次尝试AI建议在深度学习环境中使用CMD更合适于是我将VSCode切换至CMD终端但程序仍然出现了卡死问题Ctrl Shift P输入Terminal: Select Default Profile选择Command PromptAI解释说有一种高概率情况你的安装路径D:\Anaconda3而 VSCode 自动执行D:\Anaconda3\Scripts\activate.bat实际上activate.bat 内部调用 conda.bat 时死循环了。这是 Conda 24 在 Windows 的经典问题。我觉得很有可能因为我的路径和conda 24.9.2都满足了这两点4第四次尝试AI叫我重新安装环境哈哈哈哈哈我疯了我最讨厌安装环境了受不了了主包直接重启哈哈哈重启大法好啊重启大法好啊重启大法好啊重启大法好啊5复盘一下1️⃣ 核心原因Shell 激活残留进程卡死我之前的表现PowerShell 卡死conda activate sketch_gpu_new永远不返回CMD 里尝试激活也卡住重启之后一切恢复正常说明当时 Windows shellPowerShell 或 CMD里可能残留了被挂起的 conda activate 进程activate 脚本内部会修改 PATH、执行 shell hook如果上一次执行被中断KeyboardInterrupt 或异常关闭下一次激活就可能遇到锁文件 / 环境变量冲突 / PATH 未刷新这种情况最典型的是在PowerShell VSCode 终端中出现2️⃣ 次要原因PowerShell 用户配置 OneDrive我之前尝试conda init powershell卡住用户 profile 可能半残不存在或被 OneDrive / Documents 重定向干扰PowerShell 启动时会自动加载 profile如果 profile 里调用了 conda-hook.ps1就会卡住这种情况在 CMD 不激活 base 时通常没问题但 VSCode 里默认 PowerShell 就容易复现3️⃣ 其他潜在因素Conda 24 使用 libmamba solveractivate 时会访问环境 metadata如果之前进程没退出会锁住环境文件夹用户环境位于C:\Users\xxx\.conda\envs虽然不是 OneDrive但之前半残进程可能锁住某些文件VSCode 自动执行D:\Anaconda3\Scripts\activate.batconda activate MC会重复触发 shell hook如果残留进程没退出就卡住4️⃣ 为什么重启后恢复正常重启会清掉所有挂起的 activate 进程Windows 会重置环境变量、锁文件、shell hook 状态所以再打开 CMD 或 Anaconda Prompt 就能正常激活环境✅ 总结之前卡死的原因可以归纳为PowerShell VSCode shell hook 半残上一次 activate 被中断或卡死残留进程锁住环境用户 profile 或 PATH 异常环境文件或 activate.bat 被锁本质上并不是 Conda 或环境本身永久损坏而是临时进程 / shell 状态导致的卡死。经验教训 / 避坑建议CMD 更稳定VSCode 默认 CMD 终端已经改成cmd模式了遇到卡死先 CtrlC关闭终端必要时重启避免在 PowerShell 里乱执行conda init下次再不乱尝试了Conda 环境放在非 OneDrive / 非系统目录路径简单、无中文空格每个项目使用独立 Conda 环境避免 activate 互相干扰(因为主包不想下载太多的环境安装各种库怕占内存所以主包多个项目都使用的同一个环境)