[英]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.