Python 是否有办法在environment.yml中具有特定于平台的依赖关系?

Python 是否有办法在environment.yml中具有特定于平台的依赖关系?,python,cross-platform,conda,Python,Cross Platform,Conda,我正在尝试使用Conda为项目()设置构建和测试环境,并且需要具有特定于平台的依赖关系。具体来说,在Linux版本上,我需要libgfortran和openssl,但在Windows上不需要 有没有一种方法可以让我在environment.yml中声明我需要libgfortran,但只能在32位和64位Linux平台上使用?或者我需要有单独的环境定义来涵盖这种情况吗 我看到的另一个可能的解决方案是创建一个虚拟包并将其发布到一个只取决于每个平台所需的基本包,并在环境中需要该包。看见这似乎是个不错的

我正在尝试使用Conda为项目()设置构建和测试环境,并且需要具有特定于平台的依赖关系。具体来说,在Linux版本上,我需要
libgfortran
openssl
,但在Windows上不需要

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

我看到的另一个可能的解决方案是创建一个虚拟包并将其发布到一个只取决于每个平台所需的基本包,并在
环境中需要该包。看见这似乎是个不错的选择


或者,您可以为您的项目构建一个conda包吗?在康达配方的
meta.yml
中,您可以为不同的平台使用选择器

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

name: demo_env
dependencies:
  - <your_other_dependencies>
  - libgfortran [platform startswith linux]
  - openssl     [platform startswith linux]
当然,这与本机支持的情况不同,因为您需要将解析器作为子模块添加到repo中,或者只是复制它,但您可能会发现它很有用。该项目位于GitHub上:


谢谢。如果预处理选择器也能在
environment.yml
中工作,那就太棒了。我认为
environment.yml
纯粹是指一个环境的完全转储。文件明确表示,它可能无法跨平台工作。
meta.yml
实际上是关于安装确切的需求。我们可能需要忘记pip,它是使用需求文件安装的方式……我还发现
environment.yml
中的选择器很有用,所以我在提交了一个功能请求。
python create_env.py