apt-get install vs pip install

81

Python paketlerini indirirken yukarıdaki komutların kullanılması gereken durumlarda biraz kafam karıştı. Pyudev adında bir pakete şu cevaba uygun bir cevap yüklemeyi deniyordum: soru . Bu komutu yaptım:

sudo pip install python-pyudev

ancak şu mesajı aldı:

Downloading/unpacking python-pyudev

  Could not find any downloads that satisfy the requirement python-pyudev
Cleaning up...
No distributions at all found for python-pyudev
Storing complete log in /home/vineet/.pip/pip.log

Ancak aşağıdakiler işe yaradı:

sudo apt-get install python-pyudev

Paketlerin yüklenmesi için apt-get 'si kullanıldığında ve python-pip ne zaman kullanılır?

    
sordu Vineet Kaushik 09.03.2014 16:51

3 cevap

79

PyPI , Python Paketi dizinidir - python modüllerinin deposu.

pip , paketleri doğrudan PyPI'den yüklemek ve kurmak için kullanılır. PyPI, Python Yazılım Vakfı tarafından barındırılmaktadır. Sadece python paketleriyle ilgilenen özel bir paket yöneticisidir.

apt-get , Canonical tarafından barındırılan Ubuntu depolarından paketleri indirmek ve yüklemek için kullanılır.

Python paketlerini apt-get ve pip 'den yükleme arasındaki farklardan bazıları şunlardır:

  • Canonical, yalnızca seçilen python modülleri için paketler sağlar. Oysa, PyPI çok daha geniş bir python modül yelpazesine ev sahipliği yapmaktadır. Yani, apt-get kullanarak yükleyemeyeceğiniz pek çok python modülü var.

  • Canonical, yalnızca herhangi bir paketin (genellikle en son veya en son yayınlanan sürüm) tek bir sürümünü barındırır. Yani, apt-get ile istediğimiz python paketinin sürümüne karar veremeyiz. pip bu durumda bize yardımcı olur. Daha önce PyPI'ye yüklenmiş olan paketin herhangi bir sürümünü yükleyebiliriz. Bu bağımlılıklarda çatışma durumunda son derece yararlıdır.

  • apt-get sistem genelinde yere python modülleri yükler. Projemizdeki modülleri sadece virtualenv adresinde yükleyemiyoruz. pip bu sorunu bizim için çözüyor. Eğer virtualenv'i etkinleştirdikten sonra pip kullanıyorsak, modülleri sadece proje sanallaştırmamıza yüklemek için yeterince akıllıdır. Daha önce belirtildiği gibi, sistem genelinde konumlandırılmış bir python paketinin sürümü varsa ve projemizden biri aynı python paketinin daha eski bir sürümünü gerektiriyorsa, bu durumlarda sanal makine ve pip'i yüklemek için kullanabiliriz. herhangi bir çakışma olmadan python paketinin eski sürümü.

  • @Radu Rădeanu , bu cevapta , genellikle paket adlarında da farklılıklar olacaktır. Canonical, genellikle Python 2 paketlerini python-<package_name> ve Python 3 paketlerini python3-<package_name> olarak adlandırır. % Co_de% için ise sadece Python 2 ve Python3 paketleri için genellikle pip kullanmanız gerekir.

Hangisini kullanmalısınız:

Her ikisi de <package_name> ve apt-get , yükleme sırasında diğer paket bağımlılıklarını otomatik olarak yükleyen olgun paket yöneticileridir. Kimseyi istediğin gibi kullanabilirsin. Bununla birlikte, python paketinin belirli bir sürümünü yüklemeniz veya paketi bir virtualenv'e yüklemeniz veya yalnızca PyPI'de bulunan bir paketi kurmanız gerekirse; Yalnızca pip bu sorunu çözmenize yardımcı olur. Aksi takdirde, paketleri sistem genelinde yüklemeyi düşünmüyorsanız, pip veya apt-get kullanıp kullanmadığınız fark etmez.

    
verilen cevap Aditya 09.03.2014 17:53
20

As @AvinashRaj, yaptığı yorumda , pip yalnızca python paketlerini kurmak için kullanılır, ancak herhangi bir programlama dilinde oluşturulan paketleri kurmak için apt-get kullanılır.

Asıl sorunun, her iki durumda da doğru paket adını bulmaktır:

pip search pyudev

, pip install kullanarak yüklemek istediğiniz paket için doğru adı verecektir

apt-cache search pyudev

, apt-get install kullanarak yüklemek istediğiniz paketin doğru adını verecektir:

[email protected]: ~ $ pip search pyudev
pyudev                    - A libudev binding
[email protected]: ~ $ apt-cache search pyudev
python-pyudev - Python bindings for libudev
python3-pyudev - Python3 bindings for libudev

Yani, sonuç olarak, sudo apt-get install python-pyudev 'nin muhatabı sudo pip install pyudev değil, sudo pip install python-pyudev .

Artık bir python paketi kurmak istediğinizde seçmek istediğiniz şeye bağlıdır: pip veya apt-get . Hakkında bkz. bu Q & amp; A hakkında pip ve apt-get kullanarak bir paket yükleme farkı.

    
verilen cevap Radu Rădeanu 09.03.2014 17:13
1

Tercih ettiğim yol her zaman apt 'yi kullanmak ve yalnızca modülün Debian / Ubuntu deposunda pip ' yi kullanmak için değil, yalnızca kullanıcı bağlamında - --user bayrağını kullanması durumunda kullanmasıdır. % Co_de% 'lini kullanarak, Ubuntu'nun deposundan derlenen tüm inşa bağımlılıklarını almalıyız ya da kendilerine sıkıcı bir görev olabilecekleri kendilerini vermeliyiz. pip ikili paketini yüklerken apt-get indirildikten sonra bunları oluşturur. Modüller sistem yerlerine monte etmek için pip kullanmamalı. Bu yanlış yanlış. Ev konumuna konumlandırmak için her zaman pip bayrağını kullanın. Düzgün yapılandırılmış PYTHONPATH python'u önce HOME'dan modülleri ve daha sonra --user ile kurulu sistem modüllerini almasını sağladı.

    
verilen cevap mestia 08.05.2018 15:22

Etiketlerdeki diğer soruları oku