Qual è il modo "preferito" ufficiale per installare pip e virtualenv a livello di sistema?


86

È questo, che le persone sembrano consigliare più spesso:

$ sudo apt-get install python-setuptools
$ sudo easy_install pip
$ sudo pip install virtualenv

O questo, che ho ricevuto da http://www.pip-installer.org/en/latest/installing.html :

$ curl -O https://github.com/pypa/virtualenv/raw/master/virtualenv.py
$ python virtualenv.py my_new_env
$ . my_new_env/bin/activate
(my_new_env)$ pip install ...

O qualcosa di completamente diverso?

Risposte:


93

Se puoi installare l'ultimo Python (2.7.9 e versioni successive) Pip è ora fornito in bundle con esso. Vedi: https://docs.python.org/2.7//installing/index.html In
caso contrario:
Aggiorna (dalle note di rilascio):

A partire dalla v1.5.1, pip non richiede setuptools prima di eseguire get-pip.py. Inoltre, se setuptools (o distribute) non è già installato, get-pip.py installerà setuptools per te.

Ora corro regolarmente:

curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | sudo python

Ecco le istruzioni di installazione ufficiali: http://pip.readthedocs.org/en/latest/installing.html#install-pip

EDIT 25-Jul-2013:
URL modificato per l'installazione di setuptools.

EDIT 10-Feb-2014:
installazione di setuptools rimossa (grazie @Ciantic)

MODIFICA 26-Jun-2014:
URL aggiornato di nuovo (grazie @LarsH)

EDIT 1-Mar-2015:
Pip è ora fornito in bundle con Python


1
Dove / come si installa setuptools-0.8? Sembra che tu stia solo cercando ez_setup.pyuna "versione leggera" di ottenere pip. Farei lo stesso ma temo che si rompa nel prossimo futuro e rimarrò bloccato di nuovo qui (come faccio sempre)
Steven Lu

3
Ah, sembra che le istruzioni dicano di fare come dici tu qui, è sanzionato. Non importa allora.
Steven Lu

4
C'è un nuovo (?) Modo per farlo, installa automaticamente pip e setuptools: wget --no-check-certificate https://raw.github.com/pypa/pip/master/contrib/get-pip.py e poi python get-pip.py(potrebbe richiedere sudo)
Ciantic,

3
Ora l'URL per get-pip.py sembra essere cambiato in https://bootstrap.pypa.io/get-pip.py. Probabilmente è meglio collegarsi alle istruzioni ufficiali.
LarsH

2
PS Grazie per questa risposta - mi ha aiutato a installare pip.
LarsH

21

http://www.pip-installer.org/en/latest/installing.html è davvero la risposta canonica a questa domanda.

Nello specifico, le istruzioni a livello di sistema sono:

$ curl -O http://python-distribute.org/distribute_setup.py
$ python distribute_setup.py
$ curl -O https://raw.github.com/pypa/pip/master/contrib/get-pip.py
$ python get-pip.py

La sezione citata nella domanda riguarda le virtualenvistruzioni piuttosto che quelle del sistema. Le easy_installistruzioni esistono da più tempo, ma non è più necessario farlo in questo modo.


Modificato per chiarire la differenza tra le istruzioni a livello di sistema in quella pagina e le virtualenvistruzioni citate nella domanda.
ncoghlan

1
Aggiornamento: distribuire non funziona più per pip! Vedi stackoverflow.com/a/17601159/78234
Tal Weiss

1
Tieni presente che le istruzioni nella pagina collegata non corrispondono più alle istruzioni qui. È meglio visitare la pagina ufficiale e fare come si dice (e perché qualcuno ha dubitato di loro in primo luogo ?!)
Neil Traft

L'approccio descritto in questa risposta è obsoleto e sembra non funzionare più.
cel

16

Questa risposta arriva da @webology su Twitter:

$ sudo apt-get install python-setuptools
$ sudo easy_install pip
$ sudo pip install --upgrade pip virtualenv virtualenvwrapper

Le mie note aggiunte:

  • Su Mac / Windows (e Linux se il repository apt è obsoleto) sostituiresti il ​​primo passaggio con il download di setuptools da http://pypi.python.org/pypi/setuptools
  • Su Windows dovresti omettere virtualenvwrapper dall'ultimo passaggio e installarlo manualmente in qualche modo. Non so se c'è un modo per farlo senza Cygwin, ma lo spero.

1
Se la condizione è che desideri installazioni a livello di sistema di pip e virtualenv, questo è ciò che faccio generalmente. Le istruzioni dai documenti pip fornite come seconda alternativa nella domanda si basano sulla premessa che stiamo evitando di installare qualsiasi cosa a livello di sistema.
Carl Meyer

3
Puoi sostituire i primi due comandi con $ sudo apt-get install python-pip. L'installazione di python-pip installerà anche python-setuptools.
Dennis

4

Su Ubuntu 12.04 ho avuto fortuna usando solo il gestore di pacchetti:

sudo apt-get install python-pip virtualenvwrapper

1
Le versioni confezionate sono di gran lunga obsolete. 12.04 fornisce python-pip 1.0-1build1che è stato rilasciato all'inizio del 2011 e virtualenvwrapper 2.11.1-21rilasciato a gennaio 2012. La risposta di @Richard Jones ti farà ottenere l'ultima.
JCotton

3

Non esiste un metodo preferito: tutto dipende dalle tue esigenze. Spesso è necessario disporre di interpreti Python diversi sul sistema per qualsiasi motivo. In questo caso è necessario installare le cose individualmente per ogni interprete. A parte questo: preferisco installare cose da solo invece di dipendere da cose preconfezionate che a volte causano problemi, ma questa è solo una possibile opzione.


Chiedo in particolare il metodo preferito perché darò queste istruzioni a una classe di 20 persone e non voglio fuorviarle.
macinacaffè

3

Non c'è davvero una sola "risposta" a questa domanda, ma ci sono sicuramente alcuni concetti utili che possono aiutarti a prendere una decisione.

La prima domanda a cui è necessario rispondere nel tuo caso d'uso è "Voglio usare il sistema Python?" Se vuoi usare il Python distribuito con il tuo sistema operativo, allora usare il metodo apt-get install potrebbe andare bene. Tuttavia, a seconda del metodo di distribuzione del sistema operativo, è necessario porre altre domande, come "Voglio installare più versioni di questo pacchetto?" Se la risposta è sì, probabilmente non è una buona idea usare qualcosa come apt. Dpkg praticamente decomprimerà un archivio alla radice del filesystem, quindi spetta al manutentore del pacchetto assicurarsi che il pacchetto venga installato in modo sicuro con pochissime supposizioni. Nel caso della maggior parte dei pacchetti Debian, presumo (qualcuno può sentirsi libero di correggermi qui) che semplicemente decomprimono e forniscono un pacchetto di primo livello.

Ad esempio, supponiamo che il pacchetto sia "virtualenv", finiresti con /usr/lib/python2.x/site-packages/virtualenv. Se lo installi con easy_install, otterrai qualcosa del genere /usr/lib/python2.x/site-packages/virtualenv.egg-linkche potrebbe indicare /usr/lib/python2.x/site-packages/virtualenv-1.2-2.x.egguna directory o un uovo zippato. Pip fa qualcosa di simile anche se non usa le uova e invece posizionerà il pacchetto di primo livello direttamente nella libdirectory.

Potrei essere fuori strada, ma il punto è che ogni metodo tiene conto di esigenze diverse. Questo è il motivo per cui strumenti come virtualenv sono utili in quanto ti consentono di sandboxing le tue librerie Python in modo da poter avere qualsiasi combinazione di librerie e versioni di cui hai bisogno.

Setuptools permette anche di installare pacchetti come multiversione, il che significa che non viene dule_name.egg-linkcreato un singolo mo . Per importare quei pacchetti devi usare pkg_resources e la __import__funzione.

Tornando alla tua domanda originale, se sei soddisfatto del sistema python e hai intenzione di utilizzare virtualenv e pip per creare ambienti per diverse applicazioni, l'installazione di virtualenv e / o pip a livello di sistema utilizzando apt-get sembra totalmente appropriata. Una parola di cautela è però che se hai intenzione di aggiornare le tue distribuzioni Python, ciò potrebbe avere un effetto a catena attraverso i tuoi virtualenvs se ti ricolleghi ai pacchetti del tuo sito di sistema.

Dovrei anche menzionare che nessuna di queste opzioni è intrinsecamente migliore delle altre. Semplicemente adottano approcci diversi. L'utilizzo della versione di sistema è un modo eccellente per installare le applicazioni Python, ma può essere un modo molto difficile per sviluppare con Python. La facilità di installazione e setuptools è molto conveniente in un mondo senza virtualenv, ma se è necessario utilizzare versioni diverse della stessa libreria, diventa anche piuttosto ingombrante. Pip e virtualenv si comportano davvero più come una macchina virtuale. Invece di preoccuparti di installare le cose fianco a fianco, crei semplicemente un ambiente completamente nuovo. Lo svantaggio qui è che più di 30 virtualenv in seguito potresti aver utilizzato un bel po 'di spazio su disco e ingombrato il tuo filesystem.

Come puoi vedere, con le molte opzioni è difficile dire quale metodo usare, ma con una piccola indagine sui tuoi casi d'uso, dovresti essere in grado di trovare un metodo che funzioni.



2

Poiché virtualenv contiene pip per impostazione predefinita, non installo quasi mai pip a livello globale. Quello che faccio finisce per sembrare più simile a:

$ sudo apt-get install python-setuptools
$ curl -O http://python-distribute.org/distribute_setup.py
$ sudo python distribute_setup.py
$ sudo easy_install virtualenv

Procedo quindi con l'installazione e la configurazione di virtualenvwrapper a mio piacimento e via. potrebbe anche essere utile dare un'occhiata al virtualenv-burrito di Jeremy Avnet:

https://github.com/brainsik/virtualenv-burrito


Grazie per la cattura. ;)
David Gouldin

3
Perché ti preoccupi di python-setuptools e poi distribuisci quando puoi andare direttamente a distribuire?
lambacck

@lambacck Potresti postare quello che stai descrivendo in una risposta separata (anche se sembra ripetitivo)?
macinacaffè

2
Per non parlare del fatto che su qualsiasi Ubuntu recente (e anche Debian? Non sei sicuro) il pacchetto "python-setuptools" è effettivamente distribuito, quindi puoi anche saltare il passaggio di distribuzione specifico.
Carl Meyer

@ coffee-grinder distribute è un fork di setuptools e quindi fornisce le stesse funzionalità (e altro). Non preoccuparti di fare "apt-get install python-setuptools" a meno che python-setuptools non sia distribuito (come Carl indica che potrebbe essere), nel qual caso salta i passaggi 2 e 3.
lambacck

2

@ericholscher dice su Twitter: "Quello nei documenti ufficiali .."

È un ottimo punto, dovresti fare quello che dicono i documenti.

Citato dalle istruzioni di installazione ufficiali di pip su http://www.pip-installer.org/en/latest/installing.html :

$ curl -O https://github.com/pypa/virtualenv/raw/master/virtualenv.py
$ python virtualenv.py my_new_env
$ . my_new_env/bin/activate
(my_new_env)$ pip install ...

✓ Questa è l'opzione migliore se non vuoi fare affidamento sui pacchetti di distribuzione.
Tobu

2

A partire dai pacchetti distro, puoi utilizzare:

sudo apt-get install python-virtualenv

che ti consente di creare virtualenvs o

sudo apt-get install python{,3}-pip

che ti consente di installare pacchetti arbitrari nella tua directory home.

Se sei abituato a virtualenv, il primo comando ti dà tutto ciò di cui hai bisogno (ricorda, pip è in bundle e verrà installato in qualsiasi virtualenv che crei).

Se vuoi solo installare i pacchetti, il secondo comando ti dà ciò di cui hai bisogno. Usa pip in questo modo:

pip install --user something

e metti qualcosa di simile

PATH=~/.local/bin:$PATH

nel tuo ~/.bashrc.


Se la tua distribuzione è antica e non vuoi usare affatto i suoi pacchetti (tranne che per Python stesso, probabilmente), puoi scaricare virtualenv, come tarball o come script autonomo:

wget -O ~/bin/virtualenv https://raw.github.com/pypa/virtualenv/master/virtualenv.py
chmod +x ~/bin/virtualenv

Se la tua distribuzione è più del tipo bleeding edge, Python3.3 ha abilità simili a virtualenv integrate:

python3 -m venv ./venv

Funziona molto più velocemente, ma setuptools e pip non sono inclusi.


2

Per installare pip su un mac (osx), il seguente liner ha funzionato alla grande per me:

sudo easy_install pip

2

In Raspbian non c'è nemmeno bisogno di menzionarlo python2.7. In effetti questo è il modo migliore per installare pip se la versione python è inferiore alla 2.7.9.

curl --silent --show-error --retry 5 https://bootstrap.pypa.io/get-pip.py | sudo python

Grazie a @ tal-weiss



1

Uso get-pip e virtualenv-burrito per installare tutto questo. Non sono sicuro che sia richiesto python-setuptools.

# might be optional. I install as part of my standard ubuntu setup script
sudo apt-get -y install python-setuptools

# install pip (using get-pip.py from pip contrib)
curl -O https://raw.github.com/pypa/pip/develop/contrib/get-pip.py && sudo python get-pip.py

# one-line virtualenv and virtualenvwrapper using virtualenv-burrito
curl -s https://raw.github.com/brainsik/virtualenv-burrito/master/virtualenv-burrito.sh | bash


0

Il primo metodo va bene. L'unico problema che posso vedere è che potresti ritrovarti con una vecchia versione di setuptools (se il repository apt non è stato aggiornato ..

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.