【问题标题】:a minimal reproducible Conda environment最小可重现的 Conda 环境
【发布时间】:2021-12-04 09:47:15
【问题描述】:

有没有办法创建可重现的 conda 环境(例如,对于 python 项目)?

假设我们从头开始创建一个新环境:

conda create -n spiderman python=3.6
conda activate spiderman
conda env export > environment.yml

但是,现在environment.yml 文件将包含数十个包,因为它记录了所有包。

有没有办法最小化这个文件,以便只列出父包?例如。安装 pandas 时,pandas 包在后台使用 NumPy,因此没有必要在 environment.yml 文件中列出 numpy。

我知道pip-chill 概念并且我经常使用它。不过,我想问你最好的想法/提示是什么

【问题讨论】:

  • 列出所有这些包可重现环境所必需的。 Pandas 不依赖于单个版本的 numpy,而是依赖于一个版本范围,因此如果 numpy 得到更新,您将第二次获得不同的环境。大多数包管理器通过两个文件来解决这个问题,例如package.jsonyarn.lock 在纱线 (JavaScript) 中,Cargo.tomlCargo.lock 在货物 (Rust) 中。在 Python 中,Poetry 也是这样做的,但我不知道它与 Conda 有什么关系。
  • reproducible 是这里的关键词。至少,它需要完整的 python 包 + 版本列表。但是运行时例如numpy 也将依赖于预编译的二进制文件。在可重复性和简单性之间存在权衡/频谱。如果您想要完全可重复性,请使用 docker 映像。大部分可重现非常简单:basic requirements.txt
  • 你为什么不跟进你的问题?有真实的人试图帮助你!

标签: python anaconda conda development-environment


【解决方案1】:

你要找的是

conda env export --from-history --name my_env > myenv.yml

【讨论】:

  • 如果这个答案有帮助,请不要忘记接受/投票以奖励志愿者的帮助。这是 StackOverflow 工作的唯一方式。
猜你喜欢
  • 1970-01-01
  • 2019-09-10
  • 1970-01-01
  • 1970-01-01
  • 2019-01-13
  • 2017-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多