conda在"解决环境"时做了什么

dkv*_*dkv 31 python package-managers updates anaconda conda

每当我跑步时conda install/remove/update <package>,它会告诉我这是"解决环境"一段时间,然后再告诉我要下载/安装/更新的内容列表.据推测它正在寻找依赖关系<package>,但为什么它在执行此操作后有时会删除包?例如,当我尝试安装Mayavi时,它决定需要删除Anaconda Navigator.

此外,它不提供仅执行建议操作的子集的选项.有没有办法指定我不想删除包?

zha*_*u33 25

您可以--debug向conda命令添加选项,并查看控制台(或终端)的输出.例如,键入conda update --debug numpy.从输出中,我们可以看到客户端repodata.json从通道列表请求并在Solving Environment步骤中本地进行一些计算.


Cor*_*mer 10

简短的答案是:用作mamba的直接替代品conda,它解决环境问题的速度要快得多,无需再等待几分钟。mamba已得到 conda 团队的正式认可。

Mamba 还允许您更精确地配置需要安装的软件包,并允许您固定版本,就像 conda 一样。有关更详细的比较condamamba请参阅此 Stackoverflow 答案:/sf/answers/4763025991/

长答案是:解决具有多个包的 conda 环境,每个包都有自己的依赖项,很快就会成为一个相当复杂的 SAT 问题(请参阅布尔可满足性问题依赖地狱

有了好的算法,即使是相当大的 SAT 问题也可以快速解决。mamba与用 C++ 编写并设计得很快的求解器相比,似乎conda的求解器性能不是很高。过去,当人们使用小型环境时,它运行得很好,但随着环境越来越大,conda 就开始陷入困境。

我大约一年前就做出了转变,而且我再也没有回头过。我正在工作的开源项目(Nextstrain)也已经开始mambaconda新用户推荐。我还没有看到有人提倡反对使用mamba来代替conda.


小智 9

等等!我浪费了几个小时试图解决这个问题。事实证明,只花了大约 45 分钟:/


Kat*_*n57 7

作为“解决环境”步骤的旁注......
缺乏管理员权限可能会影响您是否或在哪里可以安装 python 包。

我观察到我的安装会挂在“解决环境”步骤上,并且在以非管理员身份登录时尝试安装软件包时永远不会通过。

在我卡住的机器上切换到管理员是可能的,所以我只是这样做并解决了问题。

当这不可能时,评论者解释了解决方法。

  • 确实不准确。当您在不需要管理员权限的文件夹中创建环境时,您不需要管理员权限来安装 python 包,也不需要其他任何权限。你当然可以很容易地创建一个 - 我会编辑答案 (3认同)