1

我有一个名为 的环境envname,但我希望它的包在base环境中可用。在不重新安装它们的情况下如何做到这一点?

4

1 回答 1

1

警告词

在修改基本环境时要非常小心。这是conda包所在的地方,所以如果它坏了,Conda 安装就会坏掉。这是一个非常繁琐的恢复情况,所以我通常建议不要将基本环境用于运行以外的任何事情conda update -n base conda

也就是说,应该只尝试以下方法在两个非基础环境之间共享。


跨环境复制(链接)包

一种方法是导出一个环境,我们称之为foo,作为 YAML 输出:

conda env export -n foo > foo.yaml

然后询问另一个环境,我们称之为bar,尝试安装所有包:

警告:Conda 将在不请求批准的情况下尝试以下命令!

conda env update -n bar -f foo.yaml

请注意,如果foo环境有冲突的包,它们将全部取代bar环境中的任何内容(如果可解决)。谨慎起见,您可能应该先做一个 diff,看看什么会被覆盖。例如,

conda env export -n bar > bar.yaml  # this is also useful as backup
diff -u bar.yaml foo.yaml

要检查的主要内容是python版本。它们应该匹配并包括次要版本(例如,3.6.x并且3.6.y可以;3.6并且3.7不是)。

为了谨慎起见,可能应该手动从 YAML 中删除任何可能会被还原的包 - 但是,这可能会导致冲突。

除非也使用--prune参数(本质上会用foo完全覆盖bar ),否则删除不会产生影响。

希望所有这些资格和警告都能说明问题:这可能是一团糟。从一开始就深思熟虑地设计一个新的环境通常是更好的做法。

于 2020-05-19T05:00:54.477 回答