easy_install / pip veya apt-get


30

Rails'teki Ubuntu wiki sayfasında belirtildiği gibi, mücevherlerin Rails / Ruby bağımlılıklarınızı yönetmesi önerilir.

Django gibi Python paketleri ile en iyi uygulama nedir? Onları apt-get yoluyla mı kurmalıyım yoksa easy_install / pip'in onları PyPi'den getirmesine izin vermeli miyim?

Yanıtlar:


29

Birkaç argüman var:

  1. Depoları / PPA'ları kullanın, çünkü sizi hem sağlam, hem de güvenlik önlemleriyle birlikte güncel tutacaklar.

    Bu çoğunlukla doğrudur. Örneğin, python-djangosahip olduğum şekilde kurarsanız, güvenlik güncellemelerini alırsınız. Bu iyidir, çünkü sadece en üstte kalmak zorundasınız, ancak güncellemeleri zorlamadan önce hala test etmelisiniz (her seferinde testler iyi olsa da).

    Kullanırsanız, pipgüncellemeleri kontrol etmeyeceğinizi iddia edebilirsiniz.

  2. Kullanım pipdoğru "kararlı" sürümlerini kullanabilirsiniz böylece.

    Buna hiç şüphe yok: Depolar gerçek dünyanın gerisinde kalıyor. Django 2.0'dır, ancak Ubuntu'nun LTS sürümünün repoları (çoğu insan sunucular için sadıktır), Python 2 ile Ubuntu 16.4 lts'ta yalnızca 1.8 elde edersiniz, ancak yine de güvenlik güncellemelerini alırsınız.

    pipher zaman size en son verir. Onları kendin güncellemelisin.

  3. Repo kullanılan bir Python kurulumunu yükseltme kabus olabilir

    Ubuntu'yu bir sonraki sürüme yükselttiğinizde birçok paketi yükseltir. Pek çok şey değişir. Django'da bunun kod uyumsuzluklarına, kısıtlamalara dikkat etmeniz gerektiği anlamına geldiğini biliyorum ... Ama aynı diğer Python kodları için de geçerlidir.

    Aynı şey için de geçerlidir, pipancak pipsizinle aynı anda bir şey yapabilirsiniz. Sorunlara neyin neden olduğunu biliyorsunuz, bu yüzden düzeltmeyi nerede arayacağınızı biliyorsunuz.

  4. pip+ virtualenvşeyleri ayrı tutmanıza izin verir

    virtualenvtaşınabilir, küçük Python ortamlarına sahip olmanızı sağlar. Bu, aynı makinede yan yana çalışan farklı Python ortamlarına sahip olmanızı sağlar.

    Belli bir nimet, çevreyi, kodu yönettiğiniz şekilde yönetebileceğiniz gibi bakım için görünmektedir. Ortamı VCS'de bile saklayın ... ama on iki farklı virtualenvs'ye sahip olmanızın, kontrol etmeniz ve güncellemeniz gereken on iki ortam anlamına geldiğini unutmayın .


Düzenleme: Lucid'den Precise'a almak için sunucudaki korkunç bir dizi yükseltmeden sonra, karışık bir Apt + pip (nr 1 ve 2) durumundan saf pip + virtualenv (nr. 4) durumuna geçtim. Site başına bir sanalenv yerine, bir düzine kadar site arasında paylaşılan bir tane var. Bu şimdilik çalışıyor.

Ayrıca pip ile kurulan paketlerin durumunu kontrol eden küçük bir senaryo yazmak zorunda kaldım. Güncellemeler varsa bunları manuel olarak uygulamam gerekir (bu, yerel olarak sanal bir sanal ortamda bunları test ettiğim için iyidir). Tüm bunlar hala başlangıçta olduğundan biraz daha acı verici ama uzun vadede daha iyi.


10
  • Havuzlardan gelen paketler

    Bunlar, uygulamanız Ubuntu’ya özgü bir şekilde olduğunda yüklenmelidir . Ubuntu makinelerine kurabileceğiniz sağlam bir sürüm garanti ederler, desteklenirler ve bazen pip üzerinden aldıklarından daha olgunlaşırlar. Bir sürü ubuntu sunucusu dağıtıyorsanız veya bir Ubuntu uygulaması yazıyorsanız , varsa bunları kullanın .

    Ayrıca bazen Ubuntu'ya özgü değişiklikler de içerir.

  • pip vs easy_install

    Django hacker James Bennett'in dediği gibi, bunlar hakkında söylenecek fazla bir şey yok:

    Lütfen, Guido aşkı için setuptools ve easy_install kullanmayı bırakın ve bunun yerine distutils ve pip kullanın.

    Farklara derinlemesine bir tartışma için, bkz ambalaj üzerinde (django ait) James Bennett ve tarafından “Ambalaj Üzerine” Birkaç Düzeltmeler To (mozilla) Ian Bicking tarafından.

Güvende olmak istiyorsanız, pip dağıtımlarınızı virtualenv kullanarak deneyin . Bu size yalıtılmış bir piton ortamı sağlar, böylece uygulamanızın herhangi bir makinede çalışacağından emin olabilirsiniz.

Biraz bekle, bazı insanların benimle aynı fikirde olmayacağına inanıyorum.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.