没有真正的方法可以使用环境变量来做到这一点。Pip 需求文件基本上只是文件中列出的pip install
参数列表。因此,如果您的需求文件如下所示:
Foo==1.1.0
Bar==0.1.0
Baz==2.0.1
从逻辑上讲,pip 正在这样做:
pip install Foo==1.1.0
pip install Bar==0.1.0
pip install Baz==2.0.1
不幸的是,在这种情况下,无法应用环境变量。
这个问题有几个解决方案。
第一,您可以有一个基本需求文件,例如requirements.txt
,列出所有平台的常见依赖项。然后,您可以拥有单独的需求文件,例如requirements.rhel53.txt
,requirements.rhel63.txt
等。每个文件的顶部都可以将其作为第一行:
-r requirements.txt
然后是额外的特殊依赖列表。然后,在每个环境中,您可以设置一个 env var,让我们调用它$PLATFORM
,然后运行如下命令来安装依赖项:
$ pip install -r requirements.$PLATFORM.txt
或者,您可以使用约束文件。您requirements.txt
只会列出没有版本的依赖项:
Foo
Bar
Baz
然后你可以有一个约束文件,同样适用于每个平台,它会列出特定的版本要求。例如,你可以有constraints.rhel53.txt
这样的:
Foo==1.1.0
Bar==0.1.0
Baz==2.0.1
再一次,你设置了一个 env var,然后运行如下命令:
$ pip install -r requirements.txt -c constraints.$PLATFORM.txt
这是一个麻烦的解决方案,但这是处理它的一种方式。不幸的是,pip 没有本地解决方案。