有没有一种方法可以基于平台为我的Python应用程序提供条件的requirements.txt文件?
我有一个编写的Python应用程序与Linux和Windows平台兼容。但是,有一个问题…
Windows需要的一个python软件包与Linux不兼容。幸运的是,还有另一个在Linux上提供相同功能的软件包。所有其他依赖项在两个平台中都兼容。
我知道我可以有2个单独的需求文件来分别解决两个平台依赖性。诸如win_requirements.txt和linux_requirements.txt之类的东西,但是这种方法并不感觉是最好的方法。
我想知道是否有一种方法,我只能拥有一个requirements.txt文件,以便任何用户都可以使用它pip install -r
requirements.txt
来安装所有依赖项,而不管它们是什么平台?
也许像??:
SOAPpy>=0.12.22
pycrypto>=2.6.1
suds>=0.4
Python-ldap>=2.4.19
paramiko>=1.15.2
nose>=1.3.4
selenium>=2.44.0
bottle>=0.12.8
CherryPy>=3.6.0
pika>=0.9.14
if platform.system() == 'Linux':
wmi-client-wrapper>=0.0.12
else if platform.system() == 'Windows':
WMI>=1.4.9
-
您可以创建一个
install.py
脚本并按脚本调用pip
。import pip _all_ = [ "SOAPpy>=0.12.22", "pycrypto>=2.6.1", "suds>=0.4", "Python-ldap>=2.4.19", "paramiko>=1.15.2", "nose>=1.3.4", "selenium>=2.44.0", "bottle>=0.12.8", "CherryPy>=3.6.0", "pika>=0.9.14", ] windows = ["wmi-client-wrapper>=0.0.12",] linux = ["WMI>=1.4.9",] darwin = [] def install(packages): for package in packages: pip.main(['install', package]) if __name__ == '__main__': from sys import platform install(_all_) if platform == 'windows': install(windows) if platform.startswith('linux'): install(linux) if platform == 'darwin': # MacOS install(darwin)
仅使用
requirements
文件解决此问题的另一种方法应该是使用requirements
requirements.txt
SOAPpy>=0.12.22 pycrypto>=2.6.1 suds>=0.4 Python-ldap>=2.4.19 paramiko>=1.15.2 nose>=1.3.4 selenium>=2.44.0 bottle>=0.12.8 CherryPy>=3.6.0
windows.txt
-r requirements.txt WMI>=1.4.9
linux.txt
-r requirements.txt WMI>=1.4.9
然后,您可以仅调用等同于平台的需求。
pip install -r windows.txt pip install -r linux.txt