'Python setup.py install' ve 'pip install' arasındaki fark


113

Bir tar dosyasından python virtualenv'ime yüklemek istediğim harici bir paketim var. Paketi kurmanın en iyi yolu nedir?

Bunu yapmanın 2 yolunu keşfettim:

  1. Tar dosyasını çıkarın, ardından python setup.py installçıkarılan dizinin içinde çalıştırın .
  2. pip install packagename.tar.gzhttps://pip.pypa.io/en/stable/reference/pip_install/#examples içindeki 7. örnekten

Bunları bu 2 şekilde yapmakta herhangi bir fark varsa.


5
Kullanın pip. Bununla paketleri kaldırabilirsiniz.
Blender

"VCS kontrolünde" olduğu gibi "kaynaktan" sdistmı yoksa olduğu gibi mi?

"En iyi" ne, gereksinimlerinize bağlıdır! Bu çözümlerden herhangi birini denediniz ve bir şekilde eksik kaldınız mı? Yoksa ne fark soruyorsun olan bu yaklaşımların arasındaki?
Martin Atkins

Fedora'da, örneğin yum.
perreal

Yanıtlar:


115

Yüzeyde, her ikisi de aynı şeyi yapar: python paketinizden birini yapmak python setup.py installveya pip install <PACKAGE-NAME>asgari miktarda karışıklıkla sizin için yükler.

Ancak pip kullanmak, kullanımını daha hoş hale getiren bazı ek avantajlar sunar.

  • pip, sizin için bir paket için tüm bağımlılıkları otomatik olarak indirecektir. Aksine, kullanıyorsanız setup.py, sık sık bağımlılıkları manuel olarak aramanız ve indirmeniz gerekir, bu da can sıkıcı ve sinir bozucu hale gelebilir.
  • pip, paketleri tek bir komutla kolayca kaldırmanızı ve güncellemenizi sağlayan çeşitli meta verileri takip eder: pip uninstall <PACKAGE-NAME>ve pip install --upgrade <PACKAGE-NAME>. Aksine, kullanarak bir paket yüklerseniz, bir paketi setup.pyel ile silmeniz ve ondan kurtulmak istiyorsanız elle tutmanız gerekir, bu da potansiyel olarak hataya açık olabilir.
  • Artık dosyalarınızı manuel olarak indirmenize gerek yok. Eğer kullanıyorsanız setup.py, kütüphanenin web sitesini ziyaret etmeniz, nereden indireceğinizi bulmanız, dosyayı çıkarmanız, çalıştırmanız gerekir setup.py... Buna karşılık pip , paketin orada olup olmadığını görmek için otomatik olarak Python Paket Dizini'nde (PyPi) arama yapar ve paketi sizin için otomatik olarak indirecek, çıkaracak ve kuracaktır. Birkaç istisna dışında, gerçekten kullanışlı neredeyse her bir Python kitaplığı PyPi'de bulunabilir.
  • pip , Python dağıtımının yeni standardı olan tekerlekleri kolayca takmanıza izin verir . Tekerlekler hakkında daha fazla bilgi .
  • pip, virtualenvbilgisayarınızda çakışan kitaplıklar ve Python sürümleri gerektiren birden çok proje çalıştırmanıza izin veren bir program olan kullanarak iyi entegre olan ek avantajlar sunar . Daha fazla bilgi .
  • pip, Python 2.x serisinde Python 2.7.9 ve Python 3.x serisinde Python 3.4.0 itibariyle varsayılan olarak Python ile paketlenmiştir, bu da kullanımı daha da kolaylaştırır.

Yani temelde pip kullanın. Yalnızca kullanımla ilgili iyileştirmeler sunar python setup.py install.


Python'un eski bir sürümünü kullanıyorsanız, yükseltme yapamıyorsanız ve kurulu pip yoksa, aşağıdaki bağlantılarda pip yükleme hakkında daha fazla bilgi bulabilirsiniz:

pip, kendi başına bir öğretici gerektirmez. Zamanın% 90'ında, gerçekten ihtiyacınız olan tek komuttur pip install <PACKAGE-NAME>. Bununla birlikte, pip ile tam olarak neler yapabileceğinizin ayrıntıları hakkında daha fazla bilgi edinmek istiyorsanız, bakınız:

Ayrıca pip ve virtualenv'i birlikte kullanmanız da önerilir. Python'a yeni başlayan biriyseniz, kişisel olarak sadece pip kullanarak ve global olarak paketleri kurarak başlamanın iyi olacağını düşünüyorum, ancak sonunda daha ciddi projelerle uğraşırken virtualenv kullanmaya geçmeniz gerektiğini düşünüyorum.

Pip ve virtualenv'i birlikte kullanma hakkında daha fazla bilgi edinmek isterseniz, bakınız:


1
Pip install setup.py dosyasını dahili olarak çağırır mı?
değişken

@variable, "tekerleklerden" pip kurulumu, önceden derlenmiş paketler, değil, kaynaktan pip kurulumu yapar: bkz. pip install sistem arabirimi oluşturma
denis

Tecrübelerime göre python setup.py installbağımlılıkları da indirir ve yükler. Bu cevabı 2013'te yazdığınızdan beri bu bir değişiklik mi?
Ken Williams

21

python setup.py installmake install'ın analoğudur: bu, dosyaları derlemek ve hedef dizinlere kopyalamak için sınırlı bir yoldur. Bu, sisteminize gerçekten yazılım yüklemenin en iyi yolu olduğu anlamına gelmez.

pip, aşağıdakiler dahil olmak üzere tanıdık paket yöneticileri gibi paketleri kurabilen, yükseltebilen, listeleyen ve kaldırabilen bir paket yöneticisidir: dpkg, apt, yum, urpmi, portsvb. Kaputun altında, çalışacak python setup.py install, ancak işlerin nasıl ve nerede kurulacağını kontrol etmek için belirli seçeneklerle birlikte çalışacaktır .

Özetle: kullanın pip.


2

Soru, PyPi gibi bir indeksleme servisine paket yüklemenin avantajı DEĞİL , bir python paketi içeren yerel bir tarball kurmak için tercih edilen yöntemle ilgilidir.

Bazı yazılım dağıtımcılarının paketlerini PyPi'ye yüklemediğini, bunun yerine geliştiricilerden kendi web sitelerinden paket indirmelerini ve yüklemelerini istediğini biliyorum.

python setup.py install

Bu işe yarayabilir, ancak önerilmez. Setup.py dosyasını çalıştırmak için tarball dosyasını açıp içine girmek gerekli değildir.

pip install ../path/to/packagename.tar.gz

Bu, tasarlanan ve tercih edilen yoldur. PyPi tarzı paketlerle kısa ve uyumlu.

Bununla ilgili daha fazla bilgi pip installburada bulunabilir: https://pip.readthedocs.io/en/stable/reference/pip_install/


Pip install -e kullanabilir miyiz?
Değişken
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.