如何管理Conda中的开发依赖关系? [英] How to manage development dependencies in Conda?

查看:0
本文介绍了如何管理Conda中的开发依赖关系?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我希望有两个环境:生产环境,它是测试环境的严格子集。如何使用Conda(或Micromanba)实现这一点?

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

示例可能性:

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

测试

反向(推荐答案->Prod)到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}
同样,如果需求发生变化,我会删除环境并重新运行这些步骤。请注意,这种方法忽略了现有的包缓存,因此它将下载每个包-尽管如果运行器是配置项的一部分,情况很可能就是这样。

这篇关于如何管理Conda中的开发依赖关系?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆