在Linux上安装时,如何解决从macOS导出的conda环境中的冲突?

时间:2020-08-07 07:22:39

标签: python conda

我有一个environment.yaml,可用于重新创建conda环境,如下所示:

conda env create -p /home/chris/moneybox/env --file /home/chris/moneybox/environment.lock.yaml --force

在macOS上,它可以很好地工作,在linux上,它在30分钟以上的冲突后失败,但是至少对我来说,输出是不可穿透的,而且我无法弄清需要更改的内容。

我将输出作为gist。我没有任何意义,尽管我提交了conda issue并尝试对其进行了改进,但有人能告诉我这里实际上有什么冲突以及我需要对{{ 1}}修复它们?

1 个答案:

答案 0 :(得分:2)

macOS和Linux上的软件包要求并不总是相同的。即使需求完全匹配,可用版本也不总是相同的。 (对于Linux,也许conda-forge包含foobar-1.2.3,对于macOS,可能foobar-1.2.4包含。)

由于这些原因,通常无法从macOS导出大型环境的软件包列表,并希望它能在linux上运行,反之亦然(至少以我的经验)。一旦环境足够大,就可能无法满足至少一个程序包的要求。

因此,对于macOS和Linux,您需要维护两个不同的environment.lock.yaml文件。由于您是从可在macOS上运行的文件开始的,因此一简单尝试是从所有要求中删除补丁程序版本,并查看conda是否可以使用该版本。

因此,我在您的文件上尝试了该操作。它工作很快。 (我将新的锁定文件添加为comment on your gist。)诚然,这并不理想-几乎有一半的软件包的最终版本略有不同。您需要测试环境以确保它仍然适合您的需求。

如果您确实希望两个环境尽可能地匹配,则可以尝试遍历这些差异并一次将它们还原一次,直到遇到故障。但这似乎比其价值更大。也许更好的策略是仅查看差异,看看是否有任何差异对您有利。您知道您的用例;也许您需要真正挑剔的一两个软件包,所以请手动选择这些版本,而将其余的保留下来。