我有一个当前的项目,我希望使用多个包构建.我以前在 Java / Maven和 PHP /作曲家方面有过很棒的经历,但是,我最近用一个新的演出进入了python,我不知道做“依赖管理”的“python”方式.我一
有人建议从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或其他文件.