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

2024-04-19 07:23:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个^{},我用它来重新创建conda环境,如下所示:

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

在macOS上,这很好,在linux上,它在30多分钟后由于冲突而失败,但至少对我来说,输出是无法穿透的,我无法确定需要更改什么

我把输出作为一个gist。我无法理解这一点,虽然我已经提交了一份conda issue来尝试改进,但有人能告诉我这里到底有什么冲突,以及我需要对environment.lock.yaml进行哪些更改来修复它们吗


Tags: envlockyamlhomeenvironment环境linuxcreate
1条回答
网友
1楼 · 发布于 2024-04-19 07:23:08

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的形式添加新的锁文件。)无可否认,这并不理想,将近一半的包最终使用了稍微不同的版本。您需要测试环境以确保它仍然适合您的需要

如果确实希望这两个环境尽可能地匹配,可以尝试迭代差异,并一次恢复一个,直到遇到故障。但这似乎比它的价值更麻烦。也许一个更好的策略就是仔细观察差异,看看其中是否有突出的地方。你知道你的用例;也许有一两个软件包你需要特别挑剔,所以手工挑选那些版本,剩下的就不用管了

相关问题 更多 >