我正在尝试使用Conda设置build&测试项目的环境(LensKit),并且需要具有特定于平台的依赖项。具体来说,在Linux版本中,我需要libgfortran
和openssl
,但不需要在Windows上。
有没有办法可以在environment.yml
中说明我需要libgfortran
但只能在32位和64位Linux平台上?或者我是否需要单独的环境定义来涵盖这种情况?
我看到的另一个可能的解决方案是创建一个虚拟包并将其发布到http://anaconda.org,这取决于每个平台所需的基础包,并要求environment.yml
中的包。
答案 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上: