【问题标题】:How to create an Anaconda environment from a .yml dump from another system? [duplicate]如何从另一个系统的 .yml 转储创建 Anaconda 环境? [复制]
【发布时间】:2021-10-30 17:51:05
【问题描述】:

我似乎遗漏了什么或有完全错误的期望,所以让我从列出我的期望开始:

如果:

  1. 我从同事那里得到了 Anaconda 环境的 yml 转储
  2. 我在我的机器上安装 Anaconda 并运行:conda env create -f enviornmentDump.yml

期望:我现在拥有一个可以满足我所有需要的工作环境

实际结果:我得到了一长串未找到的包

这个东西实际上不是在安装东西,只是在本地检查我想要的东西是否已经安装?如果是这样,这个用例是什么(因为它似乎非常有限),我应该在我的情况下使用什么?


编辑:我的错误是什么样的

$ conda env create -f dump.yml
Collecting package metadata (repodata.json): done
Solving environment: failed

ResolvePackageNotFound:
  - stevedore==3.3.0=py38haa244fe_1
  - pyyaml==5.4.1=py38h294d835_0
  - pip==21.0.1=py38haa95532_0
             [...]
  - numpy==1.19.2=py38hadc3359_0

【问题讨论】:

  • 可能是一些愚蠢的问题,但是 1) 你确定你使用的是创建的环境吗? 2) 你的同事是如何创建转储的? 3) 你能检查一下 .yml 中是否列出了一些缺少的包,还是它们是“未列出的依赖项”?
  • 1) 我确定我没有使用创建的环境,因为失败是在创建它的过程中 2) 不确定,实际上可以通过多种方式完成吗? 3) 它们被列为依赖项(至少一个是)
  • 当您说“一长串未找到的软件包”时,您的意思是当您创建环境时,conda 在任何存储库中都没有找到这些软件包?
  • @Tzane:我实际上不知道这是否是我的意思,在我看来它只是检查本地可用的内容然后失败。但也许事实并非如此?

标签: python anaconda conda


【解决方案1】:

所以 conda 正在检查在线包存储库,列出的包是否可用于指定版本和构建。在您的情况下,它失败了,因为某些规格无法满足。

您可以尝试删除内部版本号,即最后一个“=”之后的字符串,对于 numpy,它是“py38hadc3359_0”。或者,如果您可以要求您的同事使用 --no-build 标志创建一个没有它们的新转储,例如:

conda env export --no-builds > dump.yml

我通常在指定环境时不包括构建,版本号应该足够了。对于确切的构建,不同操作系统之间可能存在一些差异。

【讨论】:

    猜你喜欢
    • 2019-08-28
    • 2019-03-24
    • 2020-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多