conda 中的新环境能否从基础环境继承特定包

Can a new env in conda inherit specific packages from base environment

当我为我使用 pytorch 的项目创建 conda 环境时, 由于我所在地区的连接速度较慢(有时需要数小时),因此安装 torch 和 torchvision 软件包需要一些时间。

因此,为了快速开始我的项目,我没有创建新的环境,我只是使用基础环境中的包。我知道这很快就会变得毛茸茸。

这就是为什么我想知道是否有办法让新创建的环境从基本环境继承特定的包而无需重新安装。

ps:我知道 conda 利用硬链接,但我不明白在这种情况下如何使用它。感谢您的帮助。

克隆

在新环境中仅使用已安装包的最简单方法是克隆现有环境 (conda create --clone foo --name bar)。通常,我不建议克隆 base 环境,因为它包含 Conda 和其他仅在 base.

中需要的基础设施

在 workflow-level,考虑创建一些您可以为不同项目克隆的模板环境可能是有利的。

YAML 定义

但是,OP 提到只需要特定的包。我仍然会为此创建一个新的环境,但从使用导出的 YAML 的现有环境开始。

conda env export -n foo > bar.yaml

编辑 bar.yaml 以删除任何您不需要的包(同样,如果 foo == base,请删除 conda),然后使用 [=16= 创建新环境]

conda env create -f bar.yaml --name bar

这将确保使用之前环境中的包。

总的来说,如果您使用克隆和从 YAML 文件(包括构建规范)重新创建,那么 Conda 将最大限度地减少下载和物理磁盘使用。