有没有办法在environment.yml中拥有特定于平台的依赖项?

Mic*_*and 6 python cross-platform conda

我正在尝试使用Conda为项目(LensKit)设置构建和测试环境,并且需要具有特定于平台的依赖项.具体而言,在Linux上构建我需要libgfortranopenssl,但Windows.

有没有一种方法可以environment.yml说明我需要libgfortran但只能在32位和64位Linux平台上?或者我是否需要单独的环境定义来涵盖这种情况?

我看到的另一个可能的解决方案是创建一个虚拟包并将其发布到http://anaconda.org,这取决于每个平台所需的基础包,并要求包中environment.yml.

fap*_*aph 6

"虚拟包"实际上被称为"元包".请参见http://conda.pydata.org/docs/building/meta-pkg.html.这似乎是个不错的选择.

或者,您可以构建项目的conda包吗?在conda配方中,meta.yml您可以将选择器用于不同的平台.http://conda.pydata.org/docs/building/meta-yaml.html#preprocessing-selectors

  • 谢谢。如果预处理选择器也可以在`environment.yml`中工作,那就太棒了。 (2认同)
  • 我还将在`environment.yml`中发现选择器很有用,因此我在https://github.com/conda/conda/issues/8089提交了功能请求。 (2认同)

小智 5

我偶然发现了同样的问题,并为这个问题编写了一个小型解析器。在您的情况下,您可以创建一个environment.yml.meta文件,如下所示:

name: demo_env
dependencies:
  - <your_other_dependencies>
  - libgfortran [platform startswith linux]
  - openssl     [platform startswith linux]
Run Code Online (Sandbox Code Playgroud)

然后从中创建环境

python create_env.py
Run Code Online (Sandbox Code Playgroud)

当然,它与原生支持不同,因为您需要将解析器作为子模块添加到您的存储库中,或者只是将其复制过来,但也许您发现它很有用。该项目位于 GitHub 上:

https://github.com/silvanmelchior/cme_parser