我试图创建可复制的conda环境有什么问题?版本冲突错误重建克隆环境

时间:2020-05-13 15:30:12

标签: python anaconda conda

我真的在努力创造一个可复制的conda环境。我将概述到目前为止所采用的方法以及遇到的问题。我希望您能为下一步的疑难解答或可以检查的资源提供任何提示。

作为背景,我在一个小型团队中工作,并且希望能够与团队中的其他成员共享我一直在使用的环境的副本,因此我可以确定我们拥有所有所需库的相同版本为了我们的工作。

我当前的工作流程如下:

  • 写出具有非固定依赖性的环境文件,并让conda构建环境
name: example_env_build
channels:
    - conda-forge
    - defaults
dependencies:
    - pandas
    - requests

实际环境中还有很多东西,但这就是想法

  • 然后我用conda env create -f example_env_build.yml
  • 创建环境
  • 我导出环境,以便所有版本及其依赖项都用conda env export -n example_env_build --no-builds --file test_export.yml固定。我添加了--no-builds,因为我发现某些内部版本已被标记为已损坏,并导致了问题,并且正确实现该版本对于我而言已经足够接近了。
  • 我编辑test_export.yml文件,并将其名称更改为example_env,然后从底部删除prefix行。
  • 我使用此固定文件构建新环境,以确保一切正常,然后与我的团队其他成员共享该文件。

通常,如果每个人都在创建文件后尝试相对快速地构建环境,则此方法效果很好。但是,能够指定可复制环境的全部目的是,我应该能够在任何时间重新创建该环境。我团队中的某人最近有一台新计算机,所以我试图帮助她设置环境并遇到了一系列冲突。为了进行故障排除,我尝试在计算机上重建环境并遇到相同的情况。

对于故障排除,我执行了以下操作: *克隆我的环境,以便在conda create --name example_env_clone --clone example_env混乱时进行备份 *导出环境conda env export -n example_env --no-builds --file example_env_rebuild.yml *删除示例环境,以便我可以重建它conda env remove --name example_env *尝试重新创建我刚刚导出的环境conda env create -f example_env_rebuild.yml

从那里我遇到了各种各样的版本冲突。我不明白这一点,因为a)这些都是在工作环境中使用的所有版本,并且b)许多“冲突”在我看来并不矛盾。例如,这是我目前的尝试之一:

Package phik conflicts for:
phik=0.9.10
pandas-profiling=2.4.0 -> phik[version='>=0.9.8']

我基本上是随机选择的,但是有很多这样的东西。在我阅读本文时,我正在尝试安装phik 0.9.10,而pandas-profiling要求> = 0.9.8,即0.9.10即可满足。

我的智慧到此为止。我已经读过一百万本“如何管理conda环境”指南(例如thisthisthis)以及conda environment management docs。所有这些似乎都表明我在做什么应该可以正常工作,但是我和我的团队经常遇到问题。

0 个答案:

没有答案