【问题标题】:Conda install some-package hangs with (Solving environment: failed)Conda install some-package 挂起(解决环境:失败)
【发布时间】:2020-09-07 15:22:08
【问题描述】:

我尝试了多种方法,但无法 conda 安装软件包(在我的例子中是 geopandas)。我试过geopandas install guide,但得到解算器永远运行的输出。在创建新环境后,我尝试不创建环境,使用 defaults 频道并使用 conda-forge 频道。没有任何效果。

$ conda create -n top 
$ conda activate top
$ conda config --env --add channels conda-forge
$ conda config --env --set channel_priority strict
$ conda install python=3 geopandas
Collecting package metadata (current_repodata.json): done
Solving environment: failed with initial frozen solve. Retrying with flexible solve.
Solving environment: failed with repodata from current_repodata.json, will retry with next repodata source.
Collecting package metadata (repodata.json): done
Solving environment: \ 

我不想使用pip install,因为我更喜欢使用conda install

我还尝试在this answer 之后使用 Anaconda Navigator 进行安装,但进度条一直挂着,说 “解决包规范”

【问题讨论】:

  • 这对我来说花了一段时间,但最终解决了。您正在运行什么操作系统,以及什么版本的 conda?并确保 conda 是最新的。
  • 我在 Mac OS Catalina 上。运行conda update 工作正常。我在终端上做了mdfind anaconda,发现我在 3 个地方安装了 anaconda。我在/opt 中有它,在根目录/anaconda3/anaconda 中有两次。如果无法解决,我正在考虑将其完全删除并重新安装。
  • 可能...如果不是,您可以尝试在 github 上的 geopandas conda-forge recicpe 上发帖。他们从不知道自己在做什么的人那里得到了很多信息,因此这可能不是获得帮助的最佳场所,但他们可能最了解如何帮助调试。如果您确实在那里发帖,请尝试在问题中包含尽可能多的诊断和系统信息。祝你好运!
  • 如果将通道优先级重新设置为灵活,会发生什么情况?由于那些微妙的求解器问题,我通常不推荐严格
  • 我也尝试过灵活但没有帮助。我认为问题是用于创建环境的 python 版本。我使用 python=3.6 和 python=3.7 创建了新环境,然后我可以使用conda install 安装我需要的所有软件包而不会出现任何问题。我仍然无法在我的根(基本)环境中安装软件包。我想我会留下根。

标签: python installation anaconda conda geopandas


【解决方案1】:

倾向于在创建时指定约束

迭代安装包是 Conda 的真正瓶颈。如果您事先知道 env 将需要某些包,请在创建时指定它们:

conda create -n top -c conda-forge -c defaults python=3 geopandas

这对我来说在几秒钟内就解决了。如果你有很多包,那么use a YAML

使用曼巴

有时临时安装是不可避免的。对于棘手的解决方案(或只是一般地),try using mamba,一个编译的(快速!)替代conda。曼巴将在康达挣扎的地方大放异彩。

# install mamba
conda install -n base conda-forge::mamba

# use mamba
mamba install -n top geopandas

【讨论】:

  • mamba 曾经破坏过 conda 环境吗?
  • @smci 大体上,还是您专门询问 base (众所周知,Conda 本身经常中断)?简单地回答“否。”可能还为时过早破损。由于定义不明确的包元数据而导致的损坏同样会影响 Conda 和 Mamba。有趣的是,我还没有看到任何这样的报道。如果您特别担心,可以查看the Issues,但我没有看到任何重大问题。
  • merv:当然,我只是建议对 mamba 替换 conda 求解器的期望提供一些指导。
  • 在环境创建时指定约束为我做了这件事。谢谢!
  • 你的答案的第一部分是我在任何地方看到的最好的建议,即预先指定你需要的环境包(使用 Python 3.x“颠覆浮动”)并让 conda找出 Python 3.x 的哪个子版本最适合解决目标环境中所有其他包的依赖关系。预先确定你需要的“核心”包,让 conda 确定哪个 Python 3.x 版本避免了 Python 降级的问题,这通常是行不通的。当 conda 解决时,可以将环境克隆为未来类似工作的模板。
【解决方案2】:

在尝试了来自 Conda 的 GitHub 页面的许多建议后,我发现问题在于无法找到我安装的 python 版本的依赖项。创建新环境有帮助,但对于 python 版本还有一个参数。

conda create -n branch-env python=3.7
conda activate branch-env
conda install geopandas

【讨论】:

    【解决方案3】:

    conda 消息“求解环境:初始冻结求解失败。正在使用灵活求解重试。”来自

    Conda install some-package hangs with (Solving environment: failed)

    上面的答案值得提供我在任何地方看到的最好的答案之一,以处理包不兼容和无休止地等待 conda 求解器会话完成的耗时问题。

    关键是提前了解你可能需要使用哪些包,然后在创建 conda 环境时指定这些包,但让 Python 3.x 颠覆“浮动” ")。 Conda 将确定 Python 3.x 的哪个子版本是最新且最适合解决目标环境中所有其他包的依赖关系的。

    这种预先确定和指定所需环境“核心”包的方法——然后让 conda 计算出哪个 Python 3.x 版本——避免了降级 Python 的问题(这通常不起作用)。

    当您的新 conda 解决并构建您的新环境时,可以将其克隆为模板,以供将来进行类似工作。

    【讨论】:

      猜你喜欢
      • 2018-08-29
      • 1970-01-01
      • 2018-12-18
      • 2018-12-30
      • 1970-01-01
      • 2019-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多