Python 3 için paketleri kurmak için pip veya pip3?


121

OS X El Captain yüklü bir Macbook'um var. Bunun Python 2.7üzerine önceden yüklenmiş olduğunu düşünüyorum . Ancak ben de kurdum Python 3.5. Kullanmaya başladığımda Python 3, bir paket kurmak istersem şunu yazmam gerektiğini okudum:

pip3 install some_package

Neyse, şimdi kullandığım zaman

pip install some_package

İçin some_packageyüklendim Python 3. Demek istediğim, onu içe aktarabilir ve sorunsuz kullanabilirim. Sadece yazdığınızda Üstelik pip3de Terminal, ben kullanımı hakkında bu mesajı var:

Usage:   
  pip <command> [options]

bu sadece yazdığım zaman aldığım mesajın aynısı pip.

O previos sürümlerinde anlamına mı şeyler farklıydı ve şimdi pipve pip3birbirinin yerine kullanılabilir? Eğer öyleyse ve argüman uğruna, Python 2yerine paketleri nasıl kurabilirim Python 3?

Yanıtlar:


75

Sizin pip, ile aynı yürütülebilir dosya yoluna yumuşak bir bağlantıdır pip3. Sizin pipve pip3gerçek yollarınızın nerede olduğunu kontrol etmek için aşağıdaki komutları kullanabilirsiniz :

$ ls -l `which pip`
$ ls -l `which pip3`

Daha fazla ayrıntı öğrenmek için aşağıdaki komutları da kullanabilirsiniz:

$ pip show pip
$ pip3 show pip

Python'un farklı sürümlerini kurduğumuzda, bu tür yumuşak bağlantılar oluşturabiliriz.

  • varsayılan pip'i bazı sürümlere ayarlayın.
  • farklı sürümler için farklı bağlantılar oluşturun.

Bu aynı durum python, python2,python3

Farklı durumlarda nasıl gerçekleştiğiyle ilgileniyorsanız, aşağıda daha fazla bilgi:


1
Bence bu yanlış. Pip3'üm yardım çıktısında kendisine sadece pip diyor, yine de düz pip Python 2 paketlerini sistemime kuruyor. Stackoverflow.com/a/40832677/188108'in doğru olduğunu düşünüyorum , en azından gözlemlerime uyuyor.
Torsten Bronger

hangi ortamda ve python'u nasıl kurduğunuza göre değişir, bu cevap pip'in çalıştığını nasıl bileceğinize dair ipucu vermek ve soruyu soran kişinin durumuna cevap vermektir. sisteminizde aynı değilse, nedenini bulmak için hala aynı yolu kullanabilirsiniz. yanlış cevap olduğu anlamına gelmez.
CSJ

1
Bundan şüpheliyim. Mac'im yok ama test ettiğim Ubuntu tatlarında pip varyantları sembolik bağlar değil. Bunun yerine, yalnızca shebang satırında farklılık gösteren küçük Python komut dosyalarıdır.
Torsten Bronger

evet, demek istediğim, çevreye ve python (brew, apt, pyenv, manuel olarak derleme, vb.) yükleme şeklinize ve sorgulayanın durumuna göre değiştiğini kastediyorum, çünkü bunlar yumuşak bağlantılar ve biz ls -lve pip shownedenini doğrulamak için kullanıyoruz . ve tabii ki bu cevap onun sorusuna cevap vermek içindir.
CSJ

Soruyu soranın bilgisayarında sembolik bağlantılar olduğunu sanmıyorum. Pip'in bu şekilde çalıştığı / çalıştığı konusunda herhangi bir referans bulamadım.
Torsten Bronger

26

Eğer python 2.x'e sahipseniz ve sonra python3'ü yüklediyseniz, pip'iniz pip3'ü gösterecektir. pip --versionile aynı olacağını yazarak doğrulayabilirsiniz pip3 --version.

Sisteminizde artık pip, pip2 ve pip3 var .

İsterseniz pip'i pip3 yerine pip2'ye çevirebilirsiniz.


1
bunu nasıl değiştirirsin
ahnbizcad

3
@ahnbizcad En kolay yol, böyle bir takma ad tanımlamaktır: alias pip = "pip3"
apadana

2
Bunu yaptım, ancak pip3'üm pip v10 iken v9'du, bu yüzden yazdım pip3 install --upgrade pipve hem v10'u yaptım
Kevin Danikowski

2
Bu cevap yanlış. pip pip3'ü göstermeyecektir. pip Python 2 paketlerini kuracak ve pip3 Python 3 paketlerini kuracaktır. Lubuntu 18.10'da test edilmiştir.
Torsten Bronger

@TorstenBronger, ortamınızdaki python kurulumlarının sırası neydi?
apadana

14

Eğer yüklediğinizde python3, pip3yüklü alır. Eğer (python2.7 gibi) başka piton yüklemesi yoksa Sonra bir bağlantı hangi noktaları oluşturulur pipiçin pip3.

Öyleyse pip,pip3 kurulu başka bir python sürümü yoksa (python3 dışında) için bir bağlantıdır. pipgenellikle ilk kuruluma işaret eder.


7

Bu zor bir konudur. Sonunda, eğer çalıştırırsanız , sisteminizi nasıl kurduğunuza bağlı olarak pipya pip2da birini çağıracaktır pip3.


6

Örnekle:

pip --version
  pip 19.0.3 from /usr/lib/python3.7/site-packages/pip (python 3.7)

pip3 --version
  pip 19.0.3 from /usr/lib/python3.7/site-packages/pip (python 3.7)

python --version
  Python 3.7.3

which python
  /usr/bin/python

ls -l '/usr/bin/python'
  lrwxrwxrwx 1 root root 7 Mar 26 14:43 /usr/bin/python -> python3

which python3
  /usr/bin/python3

ls -l /usr/bin/python3
  lrwxrwxrwx 1 root root 9 Mar 26 14:43 /usr/bin/python3 -> python3.7

ls -l /usr/bin/python3.7
  -rwxr-xr-x 2 root root 14120 Mar 26 14:43 /usr/bin/python3.7

Böylece, benim varsayılan sistem piton (Python 3.7.3) 'de, pip bir pip3 .


5

Bence pip, pip2ve pip3aynı çalıştırılabilir dosya yoluna yumuşak bağlantılar değil. Bu komutları not edin ve linux terminalimle sonuçlanır:

mrz@mrz-pc ~ $ ls -l `which pip`
-rwxr-xr-x 1 root root 292 Nov 10  2016 /usr/bin/pip
mrz@mrz-pc ~ $ ls -l `which pip2`
-rwxr-xr-x 1 root root 283 Nov 10  2016 /usr/bin/pip2
mrz@mrz-pc ~ $ ls -l `which pip3`
-rwxr-xr-x 1 root root 293 Nov 10  2016 /usr/bin/pip3
mrz@mrz-pc ~ $ pip -V
pip 9.0.1 from /home/mrz/.local/lib/python2.7/site-packages (python 2.7)
mrz@mrz-pc ~ $ pip2 -V
pip 8.1.1 from /usr/lib/python2.7/dist-packages (python 2.7)
mrz@mrz-pc ~ $ pip3 -V
pip 9.0.1 from /home/mrz/.local/lib/python3.5/site-packages (python 3.5)

Gördüğünüz gibi farklı yollarda varlar.

pip3, pip2'nin Python2 ile yaptığı gibi, her zaman yalnızca Python3 ortamında çalışır. pip, bağlama uygun olan ortam üzerinde çalışır. Örneğin, bir Python3 venv içindeyseniz, pip Python3 ortamında çalışacaktır.


Pip'in bağlama uygun ortamla bağlantılı olduğunu söylemenin biraz yanıltıcı olduğunu söyleyebilirim. Venv durumunda, yürütülebilir pip sisteme değil venv'e özgüdür. Aynı venv'de birden fazla python sürümü kurmadıysanız, orada ortaya çıkan bu sorunu göremiyorum. Bir venv kullanılmadığında, kullanılan pip sürümü bazen sezgisel değildir ve sisteminizin konfigürasyonuna bağlıdır (diğerlerinin söylediği gibi, genellikle python'un hangi sürümünün ilk kurulduğuna göre belirlenir). Ancak Pip'in dinamik olarak bir sürümü seçmek için kullandığı herhangi bir zekası yok
Luke Baumann

3

Python 2.7'yi kurduysanız, özellikle Python 2 için paketleri kullanabilir pip2ve pip2.7kurabilirsiniz.

pip2 install some_pacakge

veya

pip2.7 install some_package

Ve paketleri özellikle Python 3 için kullanabilir pip3veya pip3.5kurabilirsiniz.


1

Windows örneğimde - ve ortamımı tam olarak anlamıyorum - kaggle-cli paketini kurmak için pip3 kullanmak işe yararken pip işe yaramadı. Conda ortamında çalışıyordum ve ortamlar farklı görünüyor.

(fastai) C: \ Kullanıcılar \ redact \ İndirilenler \ fast.ai \ deeplearning1 \ nbs> pip --version

C: \ ProgramData \ Anaconda3 \ envs \ fastai \ lib \ site-packages (python 3.6) 'dan pip 9.0.1

(fastai) C: \ Kullanıcılar \ redact \ İndirilenler \ fast.ai \ deeplearning1 \ nbs> pip3 --version

c: \ users \ redact \ appdata \ local \ programs \ python \ python36 \ lib \ site-paketlerinden (python 3.6) pip 9.0.1


0

Somepath / venv'de etkinleştirilmiş bir Python 3.6 virtualenv verildiğinde , aşağıdaki takma adlar, pip'in Apple'ın 2.7 Python'unu işaret etmekte ısrar ettiği bir macOS Sierra'daki çeşitli sorunları çözdü.

alias pip='python somepath/venv/lib/python3.6/site-packages/pip/__main__.py'

sudo pipKök kullanıcı benim takma adım veya virtualenv hakkında hiçbir şey bilmediğinden bunu yapmak zorunda kaldığımda bu çok iyi çalışmadı , bu yüzden bunu da halletmek için fazladan bir takma ad eklemem gerekti. Bu bir hack, ama işe yarıyor ve ne işe yaradığını biliyorum:

alias sudopip='sudo somepath/venv/bin/python somepath/venv/lib/python3.6/site-packages/pip/__main__.py'

arka fon:

pip3 , Apple Python ile başlamak için ( komut bulunamadı ) mevcut değildi ve /opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin/pip , which pipdöndürecekti .

Python 3.6, macports aracılığıyla kuruldu.

3.6 virtualenv etkinleştirildikten sonra çalışmak istediğim, somepath / venv / bin / pythonwhich python döndürürdü

Her nasılsa pip installdoğru olanı yapar ve sanal ortamımı vururdu, ancak pip listPython 2.7 paketlerini karıştırırdı.

Python için bu, başlangıç ​​dostu olma açısından beklentilerimin çok altında kalıyor.

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.