pip o pip3 per installare i pacchetti per Python 3?


121

Ho un Macbook con OS X El Captain. Penso che Python 2.7sia preinstallato su di esso. Tuttavia, l'ho installato Python 3.5anche io . Quando ho iniziato a usare Python 3, ho letto che se voglio installare un pacchetto, devo digitare:

pip3 install some_package

Comunque, ora quando uso

pip install some_package

Vengo some_packageinstallato per Python 3. Voglio dire che posso importarlo e usarlo senza problemi. Inoltre, quando digito appena pip3in Terminal, ho ricevuto questo messaggio circa l'uso:

Usage:   
  pip <command> [options]

che è lo stesso messaggio che ricevo appena digito pip.

Vuol dire che nelle versioni precedenti perché, le cose erano diverse, e ora pipe pip3possono essere usati in modo intercambiabile? Se è così, e per amor di discussione, come posso installare i pacchetti per Python 2invece di Python 3?

Risposte:


74

Il tuo pipè un collegamento software allo stesso percorso del file eseguibile con pip3. puoi utilizzare i comandi seguenti per verificare dove sono i tuoi percorsi pipe quelli pip3reali:

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

Puoi anche utilizzare i comandi seguenti per conoscere maggiori dettagli:

$ pip show pip
$ pip3 show pip

Quando installiamo diverse versioni di python, possiamo creare tali collegamenti software a

  • imposta il pip predefinito su qualche versione.
  • creare collegamenti diversi per versioni diverse.

E 'la stessa situazione con python, python2,python3

Maggiori informazioni di seguito se sei interessato a come accade nei diversi casi:


1
Penso che questo sia sbagliato. Il mio pip3 si chiama anche solo pip nel suo output di aiuto, tuttavia, il semplice pip installa i pacchetti Python 2 sul mio sistema. Penso che stackoverflow.com/a/40832677/188108 sia corretto, almeno concorda con le mie osservazioni.
Torsten Bronger

cambia su quale ambiente e come si installa python, questa risposta è per dare indizi su come sapere che pip funziona e per rispondere alla situazione dell'interrogante. se non è lo stesso sul tuo sistema, puoi ancora usare lo stesso modo per scoprire perché. non significa che sia una risposta sbagliata.
CSJ

1
Ne dubito. Non ho Mac ma sui gusti di Ubuntu che ho testato, le varianti pip non sono collegamenti simbolici. Invece, sono minuscoli script Python che differiscono solo nella riga shebang.
Torsten Bronger

sì, questo è ciò che intendo dire che cambia sull'ambiente e sul modo in cui installi python (brew, apt, pyenv, compila manualmente, ecc.) E per la situazione dell'interrogante è perché sono collegamenti software, e usiamo ls -le pip showper verificare il motivo. e, naturalmente, questa risposta è per rispondere alla sua domanda.
CSJ

Non penso che ci fossero collegamenti simbolici sul computer dell'interrogante. Non trovo alcun riferimento che pip abbia mai funzionato / funziona in questo modo.
Torsten Bronger

26

Se avevi python 2.x e poi hai installato python3, il tuo pip punterà a pip3. puoi verificarlo digitando pip --versionquale sarebbe lo stesso di pip3 --version.

Sul tuo sistema ora hai pip, pip2 e pip3 .

Se vuoi puoi cambiare pip in modo che punti a pip2 invece di pip3.


1
come si cambia
ahnbizcad

3
@ahnbizcad Il modo più semplice è definire un alias come questo: alias pip = "pip3"
apadana

2
L'ho fatto, ma il mio pip3 era v9 quando pip era v10, quindi ho digitato pip3 install --upgrade pipe ha reso entrambi v10
Kevin Danikowski

2
Questa risposta è sbagliata. pip non punterà a pip3. pip installerà i pacchetti Python 2 e pip3 installerà i pacchetti Python 3. Testato su Lubuntu 18.10.
Torsten Bronger

@TorstenBronger qual era l'ordine delle installazioni di Python nel tuo ambiente?
apadana

14

Quando installi python3, pip3viene installato. E se non hai un'altra installazione di python (come python2.7), viene creato un collegamento che punta pipa pip3.

Quindi pipè un collegamento apip3 se non è installata alcuna altra versione di python (diversa da python3). pipgeneralmente punta alla prima installazione.


7

Questo è un argomento delicato. Alla fine, se lo invochi pip, verrà richiamato pip2o pip3, a seconda di come hai impostato il tuo sistema.


6

Per illustrazione:

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

Quindi, il mio nel mio sistema predefinito python (Python 3.7.3), pip è pip3 .


5

Penso pip, pip2e pip3non sono collegamenti software allo stesso percorso del file eseguibile. Nota questi comandi e risultati nel mio terminale 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)

Come vedi esistono in percorsi diversi.

pip3 opera sempre solo nell'ambiente Python3, come pip2 fa con Python2. pip opera in qualsiasi ambiente sia appropriato al contesto. Ad esempio, se ti trovi in ​​un venv Python3, pip funzionerà nell'ambiente Python3.


Direi che è un po 'fuorviante dire che pip è collegato a qualsiasi ambiente sia appropriato per il contesto. Nel caso di venv l'eseguibile pip è specifico per venv e non per il sistema. A meno che tu non abbia installato più versioni di python nello stesso venv, non riesco a vedere questo problema sorgere lì. Quando non si utilizza un venv, la versione di pip utilizzata a volte non è intuitiva e dipende dalla configurazione del sistema (spesso è determinata da quale versione di python è stata installata per prima, come altri hanno detto). Ma Pip non ha alcuna intelligenza che usa per selezionare dinamicamente una versione
Luke Baumann

3

Se hai installato Python 2.7, penso che potresti usare pip2e pip2.7per installare pacchetti specifici per Python 2, come

pip2 install some_pacakge

o

pip2.7 install some_package

E puoi usare pip3o pip3.5installare pacakges specificamente per Python 3.


1

Sulla mia istanza Windows - e non capisco appieno il mio ambiente - l'utilizzo di pip3 per installare il pacchetto kaggle-cli ha funzionato, mentre pip no. Lavoravo in un ambiente conda e gli ambienti sembrano essere diversi.

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

pip 9.0.1 da 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 da c: \ users \ redact \ appdata \ local \ programmi \ python \ python36 \ lib \ site-packages (python 3.6)


0

Dato un virtualenv Python 3.6 attivato in somepath / venv , i seguenti alias hanno risolto i vari problemi su un macOS Sierra in cui pip insisteva nel puntare al Python 2.7 di Apple.

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

Questo non ha funzionato così bene quando dovevo farlo sudo pippoiché l'utente root non sa nulla del mio alias o di virtualenv, quindi ho dovuto aggiungere un alias extra per gestire anche questo. È un trucco, ma funziona e so cosa fa:

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

sfondo:

pip3 non esisteva con cui avviare ( comando non trovato ) e which piprestituiva /opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin/pip , l'Apple Python.

Python 3.6 è stato installato tramite macports.

Dopo l'attivazione del 3.6 virtualenv con cui volevo lavorare, which pythonrestituirebbe somepath / venv / bin / python

In qualche modo pip installfarebbe la cosa giusta e colpirebbe il mio virtualenv, ma pip listsnocciolerebbe i pacchetti Python 2.7.

Per Python, questo è molto al di sotto delle mie aspettative in termini di facilità d'uso per i principianti.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.