当前位置 : 主页 > 手机开发 > 其它 >

使用RPM包和使用requirements.txt管理依赖关系

来源:互联网 收集:自由互联 发布时间:2021-06-22
我有一个当前的项目,我希望使用多个包构建.我以前在 Java / Maven和 PHP /作曲家方面有过很棒的经历,但是,我最近用一个新的演出进入了python,我不知道做“依赖管理”的“python”方式.我一
我有一个当前的项目,我希望使用多个包构建.我以前在 Java / Maven和 PHP /作曲家方面有过很棒的经历,但是,我最近用一个新的演出进入了python,我不知道做“依赖管理”的“python”方式.我一直在阅读使用pip和requirements.txt文件,并使用安装模块来保存依赖项.我对txt文件的使用并没有给我留下深刻的印象,但这就是另一个讨论.

有人建议从python模块构建rpm包,并让puppet在我们的环境中管理它们.我很好奇是什么专业人士和缺点是以这种方式进行依赖管理与使用pip管理主存储库中的依赖关系.

我希望这是有道理的.提前致谢!

Puppet确实是一个管理依赖项的好工具.就个人而言,我发现从 Python模块构建RPM是PITA的一部分. Puppet的包类型实际上有 support for the pip provider.

这是一个puppet类,它将从pip安装几个示例包(取决于安装的EPEL repository以通过yum安装python-pip):

class pip_modules {
    package { "python-pip":
        ensure => installed,
    }
    $pip_packages = [
        "requests",
        "simplejson"
    ]
    package { $pip_packages:
        ensure => installed,
        provider => pip,
        require => Package["python-pip"]
    }
}

我还没有决定这是否比requirements.txt更好,这可能是一种更加pythonic的指定需求的方式.运行pip冻结肯定更容易> requirements.txt更新依赖项,但是你必须在某些时候执行pip install -r requirements.txt,也许是通过puppet exec.

对于获胜者而言,由于在构建和管理RPM方面需要额外的努力(我认为),我通常会选择上述选项,尽管从本质包(即RPM)的角度来看有很多优点.去.话虽这么说,pip / puppet是独立于操作系统的,所以如果你需要在多个操作系统上安装,那么避免使用RPM将避免你必须生成.deb或其他文件.

网友评论