有没有一种方法可以基于平台为我的Python应用程序提供条件的requirements.txt文件?

发布于 2021-01-29 18:29:47

我有一个编写的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
关注者
0
被浏览
47
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    您可以创建一个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
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看