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

时间:2015-09-30 14:42:22

标签: python cross-platform conda

我正在尝试使用Conda设置build&测试项目的环境(LensKit),并且需要具有特定于平台的依赖项。具体来说,在Linux版本中,我需要libgfortranopenssl,但不需要在Windows上。

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

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

2 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:0)

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

name: demo_env
dependencies:
  - <your_other_dependencies>
  - libgfortran [platform startswith linux]
  - openssl     [platform startswith linux]

,然后使用

从中创建环境
python create_env.py

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

https://github.com/silvanmelchior/cme_parser