当包已经安装时,Conda需要20多分钟来解决环境问题。

43

当我尝试运行conda update -n base conda时,conda在“解决环境”上卡了约20分钟,然后返回了一个不包括更新版本conda的软件包计划。下面提供了返回的软件包计划。

注意:conda update --all在合理的时间内解决了环境(~1分钟-我没有精确计时)。

复现步骤

conda update -n base conda

如我上面提到的,conda install websocket-client也卡在了“解决环境”这一步 - 当我尝试运行安装命令时,我已经安装了websocket-client版本0.53.0。

期望的行为

Conda应该:

  1. 如果已安装最新版本,则应迅速通知用户无需更新。
  2. 如果有更新版本可用,我希望Conda能够在较短时间内解决环境。我认为少于1-2分钟是合理的 - 超过20分钟太长了。

最初发布在此处:https://github.com/conda/conda/issues/7938


1
类似的问题。我刚安装了Ubuntu 18.04,更新、安装新包或更改Python版本时,在“解决环境”处挂起需要半个小时以上。 - Jay Speidell
你最终解决了这个问题吗?重新安装Ubuntu后可能是权限问题吗? - Gabriel Fair
我在一个拥有完整管理员权限的Windows 2016服务器上,使用fbprophet遇到了相同的问题。其他软件包似乎可以正常安装。 - Ali
Github链接上面发生了一些活动,虽然还不是一个解决方案,但提供了一些可能正在发生的想法。 - Jeremy Matt
4个回答

26

一个常见问题:子优先通道不佳

Anaconda发行版被设计和测试为使用anaconda通道(defaults的一个子集)作为其主要通道。在较高(channel_priority: strict)或相等优先级(channel_priority: flexible)配置中添加conda-forge,可以打开许多软件包从Conda Forge获取,这也是Conda难以解决的问题所在。

包括conda-forge既扩展了搜索范围,又打开了其他软件包的通道切换,而且由于anaconda包含数十个软件包,这可能是一个巨大的可满足性问题。这通常是在第一次将conda-forge添加到用户配置后最棘手的问题。

解决方案

有两种提高性能的高级方法:简化解决问题或使用更快的求解器。当然,这些方法并不是互斥的——可以同时考虑您对求解器的需求并采用优化工具。

选项1:优化通道优先级

当在环境中安装了anaconda元包时,请将defaults通道保持最高优先级(在.condarc中的第一个通道)并设置channel_priority: strict。请参见管理通道的文档

此外,可以使用命令强制将defaults通道作为优先级,如下:

conda update -n base --override-channels -c defaults conda

选项2:Mamba

Mambaconda CLI的替代品,它更快(已编译)并且在我使用时倾向于更积极地修剪。 安装后,它的运行方式类似于conda,例如:

mamba update -n base conda

关于备选配置的说明

许多用户发现将环境管理基础设施(Conda)与大型工作环境(Anaconda)耦合在一起不是最理想的选择。一个流行的备选配置是维护一个最小的基础环境,如果需要使用Anaconda,则创建一个新的环境并安装anaconda

基础环境的备选选项包括:

  • Miniconda - 最小的基础环境,具有默认频道优先级
  • Miniforge - 最小的基础环境,具有conda-forge频道优先级
  • Mambaforge - Miniforge基础+ Mamba

4
曼巴在这个游戏中是一个相对新鲜的玩家,但它似乎非常有前途。我真的建议任何遭受缓慢conda交易困扰的人尝试选项2! - Christian Herenz
选项1对我有效。由于我试图从需求文件创建一个新的环境,我只是在conda-forge之前加上了anaconda,问题就解决了。谢谢。 - Carlos Rodrigues
选项1和建议的命令对我没有起作用。 - germ
@germ 如果您有任何新问题并且需要提供更多情况的详细信息,请随时联系我。 - merv
2
谢谢您。我刚刚盲目地从miniconda转换到mambaforge,一个安装过程需要600多秒(在那个时间之后终止),但现在只需要69.7秒就能完成。 - user1556435

3

根据我的经验,即使是最新版本的conda,使用libmamba solver与mamba相比仍然非常慢。对我来说,最慢的部分是conda在“Collecting package metadata (repodata.json)”上卡住了,而使用mamba时我甚至都没有注意到这一点。 - undefined

0

-3

升级你的conda 针对特定的conda版本

conda install conda=4.7.12

获取最新的conda版本

conda update -n base -c defaults conda

5
“conda update -n base -c defaults conda” 这条命令不就是 OP 试图执行的吗?请问需要翻译吗? - James

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接