gpt4 book ai didi

conda - 如何在 Conda 中管理开发依赖?

转载 作者:行者123 更新时间:2023-12-05 03:36:49 28 4
gpt4 key购买 nike

我想要两个环境:生产环境是测试环境的严格子集。我如何使用 Conda(或 micromamba)实现这一目标?

测试需要一些不需要捆绑在生产 docker 镜像中的额外实用程序。主要思想是确保生产安装中的子依赖项与在配套环境中测试的版本完全相同。

示例可能性:

  • 是否有指定约束文件(如 pip)的选项,该文件可以包含比当前安装的更多的包(以及从测试环境填充此文件的方法,以在创建产品环境时使用)?
  • 有没有什么方法可以限制 conda 只从本地缓存中检索包,而本地缓存是通过安装之前的环境重新填充的?
  • 是否可以选择安装附加(测试)要求,同时强制 conda 不升级/降级环境中的任何现有包? (但是以这种方式从产品环境的副本中建立测试环境可能无法满足版本冲突..)

最佳答案

朝相反的方向(测试 -> 产品)转到 my previous answer有点棘手。基本上,我们想先解决测试环境问题,然后只使用该环境中的包版本来创建生产环境。下面是我检查过的一种方法,虽然它不是标准的。

临时包缓存+离线解决

主要思想是使用临时包缓存,以便在创建 pkg_prod 环境时,只有安装在测试环境中的包可用于求解步骤。我们开始吧:

## create a temporary directory for package cache
tmp_pkg_cache=$(mktemp -d)

## create test environment (it uses both prod and test reqs)
CONDA_PKGS_DIRS=${tmp_pkg_cache} mamba create -n pkg_test \
--file requirements.prod.txt --file requirements.test.txt

## restrict prod env creation to packages in the tmp cache
CONDA_PKGS_DIRS=${tmp_pkg_cache} mamba create -n pkg_prod \
--file requirements.prod.txt --offline

## clean up cache
rm -rf ${tmp_pkg_cache}

同样,如果需求发生变化,我会删除环境并重新运行这些步骤。请注意,此方法会忽略现有的包缓存,因此它会下载每个包 - 尽管如果运行器是 CI 的一部分,无论如何都可能是这种情况。

关于conda - 如何在 Conda 中管理开发依赖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69548005/

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