首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何管理Conda中的开发依赖关系?

如何管理Conda中的开发依赖关系?
EN

Stack Overflow用户
提问于 2021-10-12 23:23:47
回答 2查看 668关注 0票数 2

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

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

例如可能性:

  • 是否可以指定一个约束文件(如pip),其中包含比当前安装的包更多的包(以及从测试env填充此文件的方法,以便在创建prod env时使用)?
  • 是否有方法限制conda仅从上一个env安装时刚刚填充的本地缓存中检索包?
  • 是否可以选择安装附加(测试)要求,同时强迫conda不升级/降级环境中的任何现有软件包?(但以这种方式根据prod env的副本进行测试env可能会导致无法满足版本冲突。)
EN

回答 2

Stack Overflow用户

发布于 2021-10-14 00:25:05

向相反的方向(测试-> prod)到my previous answer是有点棘手的。基本上,我们希望首先解决测试环境,然后只使用来自该环境的包版本来创建生产环境。下面是我检查的一种方法将有效,尽管这是不标准的。

临时包缓存+离线解决

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

代码语言:javascript
复制
## 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的一部分,情况可能也是如此。

票数 1
EN

Stack Overflow用户

发布于 2021-10-13 16:46:04

Conda不以任何有用的方式直接支持嵌套环境。但是,有一些定义良好的步骤将生成具有相同版本的公共包的环境。下面是一个可能的程序。

克隆+冷冻安装

为了给出一个具体的示例,以及一个在其通用性中使用Conda的示例(这不是以Python为中心的),让我们考虑一个的开发项目--一个R包。假设我们有两组要求:

requirements.prod.txt

代码语言:javascript
复制
r-base=4.0
r-magrittr
r-dplyr

requirements.test.txt

代码语言:javascript
复制
r-testthat
r-usethis

以下命令将创建两个环境,其中一个环境(pkg_test)将是产品(pkg_prod)的超集:

代码语言:javascript
复制
## first, use Mamba if you aren't already
## conda install -n base conda-forge::mamba

## create the dev environment
mamba create -n pkg_prod --file requirements.prod.txt

## create the test environment as a clone
mamba create --clone pkg_prod -n pkg_test

## install the additional requirements, without updating pkgs
mamba install -n pkg_test --freeze-installed --file requirements.test.txt

如果您更改了需求,最好是重新创建环境。我推荐Mamba,因为它最小化了解决时间,在事情出错时提供了更精确的诊断,并且很少给出令人惊讶的解决结果。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69548005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档