【问题标题】:What does conda do when "solving environment"conda在“解决环境”时做了什么
【发布时间】:2019-01-16 03:35:47
【问题描述】:

每当我运行conda install/remove/update <package> 时,它都会告诉我它是“解决环境”一段时间,然后才告诉我它将下载/安装/更新的内容列表。想必它正在寻找<package> 的依赖关系,但是为什么它有时会在执行此操作后remove 包?例如,当我尝试安装 Mayavi 时,它决定需要删除 Anaconda Navigator。

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

【问题讨论】:

  • 嗯,它需要删除包的原因是因为存在依赖冲突,而删除一个包是 conda 解决冲突的最简单方法(对于 conda 求解器使用的任何简单定义)。这也是您无法执行部分操作的原因,因为您的环境可能最终处于不一致的状态。我不确定使用的具体算法,但代码是开源的:github.com/conda/conda

标签: python anaconda updates conda package-managers


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

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

    评论者解释了无法做到这一点时的解决方法。

    【讨论】:

    • 确实不准确。当您在不需要管理员权限的文件夹中创建环境时,您不需要管理员权限来安装 python 包,而无需其他任何事情。您当然可以非常轻松地创建一个 - 我会编辑答案
    • 谢谢。我没有意识到这一点。我试图弄清楚如何在工作中解决这个问题,因为我不能让自己成为管理员。你是说我可以解决这个问题,所以这是个好消息!!!我只是发布了这个,因为当我遇到问题时,我寻求帮助将我带到这里但我没有找到它。
    【解决方案3】:

    conda install --prune <<package>>帮我安装了正确的频道。

    使用的可疑环境用于滑索和使用的通道与现有的不兼容。 prune 花了很多时间,但帮助我解决了环境问题。

    【讨论】:

      猜你喜欢
      • 2018-12-18
      • 2019-05-21
      • 2019-03-14
      • 2018-08-29
      • 2020-08-10
      • 1970-01-01
      • 2020-02-03
      • 2022-10-01
      • 1970-01-01
      相关资源
      最近更新 更多