簡體   English   中英

使用RPM包與使用requirements.txt管理依賴關系

[英]Using RPM packages vs. Managing Dependencies with requirements.txt

我有一個當前的項目,我希望使用多個包構建。 我以前在Java / Maven和PHP /作曲家方面有過很棒的經歷,但是,我最近用一個新的演出進入了python,我不知道做“依賴管理”的“python”方式。 我一直在閱讀使用pip和requirements.txt文件,並使用安裝模塊來保存依賴項。 我對txt文件的使用並沒有給我留下深刻的印象,但這就是另一個討論。

有人建議從python模塊構建rpm包,並讓puppet在我們的環境中管理它們。 我很好奇以這種方式進行依賴管理的優點和缺點是使用pip管理主存儲庫中的依賴關系。

我希望這是有道理的。 提前致謝!

Puppet確實是一個管理依賴項的好工具。 就個人而言,我發現從Python模塊構建RPM是PITA的一部分。 Puppet的package類型實際上支持pip提供者

這是一個puppet類,它將從pip安裝幾個示例包(取決於安裝的EPEL存儲庫 ,通過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 freeze > requirements.txt來更新依賴項肯定更容易,但是你必須在某些時候執行pip install -r requirements.txt ,也許是通過puppet exec

對於獲勝者而言,由於在構建和管理RPM方面需要額外的努力(我認為),我通常會選擇上述選項,盡管從本質包(即RPM)的角度來看有很多優點。去。 話雖這么說,pip / puppet是獨立於操作系統的,所以如果你需要在多個操作系統上安裝,那么避免使用RPM將避免你必須生成.deb或其他文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM