conda在“解决环境”时做了啥
Posted
技术标签:
【中文标题】conda在“解决环境”时做了啥【英文标题】: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 【参考方案1】:您可以将--debug
选项添加到 conda 命令并查看控制台(或终端)的输出。例如,键入 conda update --debug numpy
。
从输出中,我们可以看到客户端从频道列表中请求repodata.json
,并在Solving Environment
步骤中进行本地计算。
【讨论】:
【参考方案2】:作为“解决环境”步骤的旁注... 缺乏管理员权限可能会影响您是否可以安装 python 包或在哪里安装。
我观察到,在以非管理员身份登录时尝试安装软件包时,我的安装会挂在“解决环境”步骤上,并且永远无法通过。
在我卡住的机器上切换到管理员是可能的,所以我就这样做了,它解决了问题。
评论者解释了无法做到这一点时的解决方法。
【讨论】:
确实不准确。当您在不需要管理员权限的文件夹中创建环境时,您不需要管理员权限来安装 python 包,而无需其他任何事情。您当然可以非常轻松地创建一个 - 我会编辑答案 谢谢。我没有意识到这一点。我试图弄清楚如何在工作中解决这个问题,因为我不能让自己成为管理员。你是说我可以解决这个问题,所以这是个好消息!!!我只是发布了这个,因为当我遇到问题时,我寻求帮助将我带到这里但我没有找到它。【参考方案3】:conda install --prune <<package>>
帮我安装了正确的频道。
使用的可疑环境用于滑索和使用的通道与现有的不兼容。 prune 花了很多时间,但帮助我解决了环境问题。
【讨论】:
以上是关于conda在“解决环境”时做了啥的主要内容,如果未能解决你的问题,请参考以下文章
在使用联合调用 PInvoke 结构时,我在使用 StructLayout( LayoutKind.Explicit ) 时做错了啥?
创建 conda 环境:“发现冲突!”当解决环境和“寻找最短冲突路径”永远运行时
解决环境:使用 current_repodata.json 失败,将使用下一个 repodata 源重试。 Conda 无法创建新环境