gpt4 book ai didi

python - conda 从环境文件创建与 conda 克隆

转载 作者:行者123 更新时间:2023-12-04 14:03:07 60 4
gpt4 key购买 nike

我们保留了 conda 环境的旧实例,以便人们可以克隆它们。

我注意到,当我使用 conda create --clone 时,包仍在下载而不是复制。

因此我想知道只保留导出的 environment.yaml 文件是否具有相同的效果。

基本上,问题是,以下两种情况有何不同(如果有的话)?

conda activate old_env
conda env export > env.yml
conda create -n new_env -f env.yml

对比

conda create -n new_env --clone /path/to/old_env

我看过 conda source code here但我对代码库不够熟悉,无法理解正在发生的事情。

最佳答案

手边没有现成的全面答案,但我注意到两个不同之处:

  • 克隆会复制所有未跟踪的文件。conda-env 将检测 PyPI 包并将它们包含在 YAML 中,conda create --clone将检测任何 非 Conda 文件并复制它们。如果不通过 Conda 或 Pip 将其他软件安装到环境中,这可能很有用。例如,一个 R env,其中可能使用 devtools::install_github() 而不是 Conda 从 GitHub 安装了一些东西。因此克隆可以维持定制的环境。
  • 在新环境中显式规范存在细微差别。这有点微不足道,但克隆将在显式规范中包括源 channel 和子目录,而 YAML 不会(除非最初包括)。例如,在 new 环境中运行 conda env export 将为 YAML 和 conda-forge/osx-64::numpy==1.20.1=py39h3c955ea_0 用于克隆环境。这主要是无关紧要的,因为构建字符串本身(此处 py39h3c955ea_0)几乎总是足够独特以辨别来源 channel 。

我不确定您为什么会看到重新下载。这可能对用户是否具有共享包缓存 (pkgs_dirs) 或用户清理包缓存 (conda clean -tp) 的副作用敏感。在我刚刚做的一个测试用例中,有一些重新下载的包,但只是一个子集。请注意,您也可以尝试使用 --offline 标志来仅使用包缓存。

关于python - conda 从环境文件创建与 conda 克隆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69391970/

60 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com