Solving environment卡住是conda依赖求解瓶颈,非网络问题;应确认清华源生效、换用mamba solver、避免pip混装、精简依赖并新建干净环境。

为什么Solving environment会卡住
这不是网络慢,而是 conda 在做逻辑推理:它要从成百上千个包版本中,找出一组能同时满足所有依赖约束的组合。一旦环境里已有 20+ 个包,或你装了 pytorch、tensorflow 这类强依赖链的包,搜索空间就指数级膨胀。常见现象是光标停在 Solving environment: / 十几秒不动,或者反复出现 failed with initial frozen solve. Retrying with flexible solve.。
先确认是不是真卡在 solving 阶段
别一看到没反应就 Ctrl+C。运行带 --dry-run 的命令,看卡在哪:
conda install scikit-learn --dry-run
如果输出卡在 Collecting package metadata,说明是网络或镜像源问题;如果卡在 Solving environment 后长时间无输出,才是典型的依赖求解瓶颈。
- 用
conda config --show channels确认清华源已生效(输出里要有https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/) - 如果没看到,执行:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/,再加conda config --set show_channel_urls true - 注意:.condarc 文件优先级是当前目录 > 用户主目录 > 系统级,多环境切换时容易漏配
换 solver 或精简求解范围
原生 conda solver(Classic Solver)在 Python 3.11+ 和复杂 AI 环境下效率明显下降。直接替换更靠谱:
立即学习“Python免费学习笔记(深入)”;
- 装
mamba:conda install mamba -c conda-forge,之后全用mamba install替代conda install,速度通常快 5–10 倍 - 避免模糊指定版本,比如写
numpy不如写numpy=1.24.3,减少搜索空间 - 删掉
environment.yml里非核心包,尤其是defaults和conda-forge混用时容易触发 channel 优先级冲突 - 实在不行,新建干净环境:
conda create -n fresh_env python=3.11,再装目标包
别让 pip 和 conda 混着用
很多人以为“pip 装得快”就随手 pip install torch,结果 conda 后续 install 时完全无法识别这个包,导致 solver 反复失败。更糟的是,pip 装的包可能和 conda 已有同名包版本冲突,引发 ImportError。
- 坚持用 conda 安装主流科学计算包(
numpy、scipy、pytorch等) - 如果必须用 pip,只在 conda 环境创建后、且所有 conda 包装完再执行,并加
--no-deps避免意外拉依赖 - 检查是否混用:
conda list | grep "pypi",有输出就说明 pip 包已混入
最常被忽略的一点:solver 卡顿往往不是单个操作的问题,而是环境长期积累的 channel 配置混乱 + 多次 pip 混装 + 缓存过期共同导致的。重装 Anaconda 解决不了,清缓存也治标不治本——真正该做的是把 .condarc 彻底重写,用 mamba 替代,以及养成“新任务开新环境”的习惯。


















