我有一个名为 的环境envname
,但我希望它的包在base
环境中可用。在不重新安装它们的情况下如何做到这一点?
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 回答