pip lub pip3 do zainstalowania pakietów dla Pythona 3?

121

Mam Macbooka z systemem OS X El Captain. Myślę, że Python 2.7jest na nim preinstalowany. Jednak zainstalowałem Python 3.5też. Kiedy zacząłem używać Python 3, przeczytałem, że jeśli chcę zainstalować pakiet, powinienem wpisać:

pip3 install some_package

W każdym razie, teraz kiedy używam

pip install some_package

I get some_packagezainstalowane Python 3. Chodzi mi o to, że mogę go zaimportować i używać bez problemów. Co więcej, kiedy właśnie pip3wpisuję Terminal, otrzymuję wiadomość o użyciu:

Usage:   
  pip <command> [options]

czyli ta sama wiadomość, którą otrzymuję, kiedy piszę pip.

Czy to oznacza, że ​​w poprzednich wersjach było inaczej, a teraz pipi pip3można ich używać zamiennie? Jeśli tak, i ze względu na argumentację, jak mogę zainstalować pakiety Python 2zamiast Python 3?

Ammar Alyousfi
źródło

Odpowiedzi:

75

Twoje pipjest miękkim dowiązaniem do tej samej ścieżki pliku wykonywalnego z pip3. możesz użyć poniższych poleceń, aby sprawdzić, gdzie są twoje pipi pip3rzeczywiste ścieżki:

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

Możesz również użyć poniższych poleceń, aby poznać więcej szczegółów:

$ pip show pip
$ pip3 show pip

Kiedy instalujemy różne wersje Pythona, możemy tworzyć takie miękkie linki do

  • ustaw domyślny pip na jakąś wersję.
  • tworzyć różne linki dla różnych wersji.

To jest taka sama sytuacja python, python2,python3

Więcej informacji poniżej, jeśli interesuje Cię, jak to się dzieje w różnych przypadkach:

CSJ
źródło
1
Myślę, że to źle. Mój pip3 również nazywa się po prostu pip w swoim wyjściu pomocy, jednak zwykły pip instaluje pakiety Python 2 w moim systemie. Myślę, że stackoverflow.com/a/40832677/188108 jest poprawny, przynajmniej zgadza się z moimi obserwacjami.
Torsten Bronger
zmienia się w jakim środowisku i jak instalujesz Pythona, ta odpowiedź ma dać wskazówkę, jak sprawdzić, czy pip działa i odpowiedzieć na sytuację pytającego. jeśli nie to samo w twoim systemie, nadal możesz użyć tego samego sposobu, aby dowiedzieć się, dlaczego. nie znaczy, że to zła odpowiedź.
CSJ
1
Wątpię w to. Nie mam Maca, ale w testowanych wersjach Ubuntu warianty pip nie są dowiązaniami symbolicznymi. Zamiast tego są to małe skrypty Pythona, które różnią się tylko linią shebang.
Torsten Bronger,
tak, mam na myśli to, że zmienia się w środowisku i sposobie instalacji Pythona (brew, apt, pyenv, skompiluj ręcznie, itp.), aw przypadku pytającego jest tak, ponieważ są to miękkie linki, a my używamy ls -li pip showweryfikujemy przyczynę. i oczywiście ta odpowiedź jest odpowiedzią na jego pytanie.
CSJ
Nie sądzę, żeby na komputerze pytającego były dowiązania symboliczne. Nie znajduję żadnego odniesienia, że ​​pip kiedykolwiek działał / działa w ten sposób.
Torsten Bronger,
26

Jeśli miałeś python 2.x, a następnie zainstalowałeś python3, twój pip będzie wskazywał na pip3. możesz to sprawdzić, wpisując, pip --versionktóre będzie takie samo jak pip3 --version.

W swoim systemie masz teraz pip, pip2 i pip3 .

Jeśli chcesz, możesz zmienić pip, aby wskazywał na pip2 zamiast pip3.

apadana
źródło
1
jak to zmienić
ahnbizcad
3
@ahnbizcad Najłatwiej jest zdefiniować taki alias: alias pip = "pip3"
apadana
2
Zrobiłem to, ale mój pip3 był v9, a pip był v10, więc pip3 install --upgrade pip
wpisałem
2
Ta odpowiedź jest błędna. pip nie będzie wskazywał pip3. pip zainstaluje pakiety Python 2, a pip3 zainstaluje pakiety Python 3. Testowane na Lubuntu 18.10.2019
Torsten Bronger
@TorstenBronger Jaka była kolejność instalacji Pythona w Twoim środowisku?
apadana
14

Podczas instalacji python3, pip3zostanie zainstalowana. A jeśli nie masz innego instalacji Pythona (jak python2.7), a następnie związek jest tworzony co wskazuje pipna pip3.

Tak samo pipjest z linkiem do,pip3 jeśli nie ma zainstalowanej innej wersji Pythona (innej niż python3). pipogólnie wskazuje na pierwszą instalację.

Ani Menon
źródło
7

To trudny temat. W końcu, jeśli wywołasz pipsystem, wywoła to albo pip2albo pip3, w zależności od tego, jak skonfigurujesz swój system.

Max Uppenkamp
źródło
6

Według ilustracji:

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

Tak więc my w moim domyślnym systemie python (Python 3.7.3) pip to pip3 .

Victoria Stuart
źródło
5

Myślę pip, pip2i pip3nie są miękkie linki do tego samego pliku wykonywalnego ścieżce. Zwróć uwagę na te polecenia i wyniki w moim terminalu linux:

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)

Jak widzisz, istnieją na różnych ścieżkach.

pip3 zawsze działa tylko w środowisku Python3, tak jak działa pip2 z Python2. pip działa w każdym środowisku, które jest odpowiednie dla kontekstu. Na przykład, jeśli jesteś w środowisku Python3 venv, pip będzie działać w środowisku Python3.

Mohammad Reza
źródło
Powiedziałbym, że trochę mylące jest stwierdzenie, że pip jest powiązany z dowolnym środowiskiem, które jest odpowiednie dla kontekstu. W przypadku venv plik wykonywalny pip jest specyficzny dla venv, a nie dla systemu. O ile nie zainstalowałeś wielu wersji Pythona na tym samym venv, nie widzę tego problemu. Kiedy nie używasz venv, używana wersja pip jest czasami nieintuicyjna i zależy od konfiguracji twojego systemu (często jest to określane przez to, która wersja Pythona została zainstalowana jako pierwsza, jak powiedzieli inni). Ale Pip nie ma żadnej inteligencji, której używa do dynamicznego wybierania wersji
Luke Baumann
3

Jeśli zainstalowałeś Python 2.7, myślę, że możesz użyć pip2i pip2.7zainstalować pakiety specjalnie dla Pythona 2, na przykład

pip2 install some_pacakge

lub

pip2.7 install some_package

Możesz używać pip3lub pip3.5instalować paczki specjalnie dla Pythona 3.

mikeqfu
źródło
1

Na mojej instancji Windows - i nie rozumiem w pełni swojego środowiska - użycie pip3 do zainstalowania pakietu kaggle-cli działało - podczas gdy pip nie. Pracowałem w środowisku conda, a środowiska wydają się być inne.

(fastai) C: \ Users \ redact \ Downloads \ fast.ai \ deeplearning1 \ nbs> pip --version

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

(fastai) C: \ Users \ redact \ Downloads \ fast.ai \ deeplearning1 \ nbs> pip3 --version

pip 9.0.1 z c: \ users \ redact \ appdata \ local \ programy \ python \ python36 \ lib \ site-packages (python 3.6)

PO POŁUDNIU
źródło
0

Biorąc pod uwagę aktywowany virtualenv w języku Python 3.6 w Somepath / venv , następujące aliasy rozwiązały różne problemy w systemie macOS Sierra, w którym pip nalegał na wskazanie Pythona 2.7 firmy Apple.

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

Nie działało to tak dobrze, gdy musiałem to zrobić, sudo pipponieważ użytkownik root nie wie nic o moim aliasie lub virtualenv, więc musiałem dodać dodatkowy alias, aby to również obsłużyć. To hack, ale działa i wiem, co robi:

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

tło:

pip3 nie istnieje do uruchomienia ( nie znaleziono polecenia ) z i which pipzwróci /opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin/pip , plik Apple Python.

Python 3.6 został zainstalowany przez macports.

Po aktywacji 3.6 virtualenv, z którym chciałem pracować, which pythonzwróciłbym somepath / venv / bin / python

W jakiś sposób postąpiłoby pip installdobrze i uderzył w mój virtualenv, ale pip listwyłączyłby pakiety Pythona 2.7.

W przypadku Pythona jest to znacznie poniżej moich oczekiwań pod względem przyjazności dla początkujących.

JL Peyret
źródło