¿Cuál es la forma oficial "preferida" de instalar pip y virtualenv en todo el sistema?

86

¿Es esto lo que la gente parece recomendar con más frecuencia?

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

O esto, que obtuve de 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 algo completamente diferente?

molinillo de cafe
fuente

Respuestas:

93

Si puede instalar la última versión de Python (2.7.9 y superior), Pip ahora se incluye con él. Ver: https://docs.python.org/2.7//installing/index.html
Si no es así:
Actualización (de las notas de la versión):

A partir de la v1.5.1, pip no requiere herramientas de configuración antes de ejecutar get-pip.py. Además, si setuptools (o distribuir) aún no está instalado, get-pip.py instalará setuptools por usted.

Ahora ejecuto el regular:

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

Aquí están las instrucciones de instalación oficiales: http://pip.readthedocs.org/en/latest/installing.html#install-pip

EDITAR 25-Jul-2013:
URL modificada para la instalación de setuptools.

EDITAR 10-Feb-2014:
Se eliminó la instalación de setuptools (gracias @Ciantic)

EDITAR 26-Jun-2014:
URL actualizada nuevamente (gracias @LarsH)

EDITAR 1-Mar-2015:
Pip ahora está incluido con Python

Tal Weiss
fuente
1
¿Dónde / cómo se instala setuptools-0.8? Parece que estás ez_setup.pybuscando una "versión ligera" de conseguir pip. Haría lo mismo, pero temo que se rompa en un futuro cercano y me quedaré atascado aquí nuevamente (como siempre lo hago)
Steven Lu
3
Ah, parece que las instrucciones dicen que haga lo que dice aquí, está autorizado. Olvidalo entonces.
Steven Lu
4
Hay una nueva (?) Forma de hacer esto, esto instala pip y setuptools automáticamente: wget --no-check-certificate https://raw.github.com/pypa/pip/master/contrib/get-pip.py y luego python get-pip.py(puede requerir sudo)
Ciantic
3
Ahora la URL de get-pip.py parece haber cambiado a https://bootstrap.pypa.io/get-pip.py. Probablemente sea mejor simplemente enlazar a las instrucciones oficiales.
LarsH
2
PD: Gracias por esta respuesta, me ayudó a instalar pip.
LarsH
21

http://www.pip-installer.org/en/latest/installing.html es realmente la respuesta canónica a esta pregunta.

Específicamente, las instrucciones para todo el sistema son:

$ 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 sección citada en la pregunta son las virtualenvinstrucciones en lugar de las de todo el sistema. Las easy_installinstrucciones han existido por más tiempo, pero ya no es necesario hacerlo de esa manera.

Richard Jones
fuente
Editado para aclarar la diferencia entre las instrucciones de todo el sistema en esa página y las virtualenvinstrucciones que se citaron en la pregunta.
ncoghlan
1
Actualización: ¡la distribución ya no funciona para pip! Ver stackoverflow.com/a/17601159/78234
Tal Weiss
1
Tenga en cuenta que las instrucciones de la página vinculada ya no coinciden con las instrucciones aquí. Es mejor visitar la página oficial y hacer lo que dicen (¡¿y por qué alguien dudó de ellos en primer lugar?!)
Neil Traft
El enfoque descrito en esta respuesta está desactualizado y parece que ya no funciona.
cel
16

Esta respuesta proviene de @webology en Twitter:

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

Mis notas agregadas:

  • En Mac / Windows (y Linux si el repositorio de apt está desactualizado), reemplazaría el primer paso con la descarga de setuptools desde http://pypi.python.org/pypi/setuptools
  • En Windows, tendría que omitir virtualenvwrapper en el último paso e instalarlo manualmente de alguna manera. No sé si hay una manera de hacer esto sin Cygwin, pero eso espero.
molinillo de cafe
fuente
1
Si la condición es que desea instalaciones de todo el sistema de pip y virtualenv, esto es lo que hago generalmente. Las instrucciones de los documentos pip que se dan como la segunda alternativa en la pregunta se basan en la premisa de que estamos evitando instalar cualquier cosa en todo el sistema.
Carl Meyer
3
Puede reemplazar los dos primeros comandos con $ sudo apt-get install python-pip. La instalación de python-pip también instalará python-setuptools.
Dennis
4

En Ubuntu 12.04 tuve buena suerte con solo usar el administrador de paquetes:

sudo apt-get install python-pip virtualenvwrapper
Jason McVetta
fuente
1
Las versiones empaquetadas están muy desactualizadas. 12.04 proporciona python-pip 1.0-1build1que se publicó a principios de 2011 y se virtualenvwrapper 2.11.1-21publicó en enero de 2012. La respuesta de @Richard Jones le proporcionará la última versión.
JCotton
3

No existe un método preferido, todo depende de sus necesidades. A menudo es necesario tener diferentes intérpretes de Python en el sistema por cualquier motivo. En este caso, debe instalar el material individualmente para cada intérprete. Aparte de eso: prefiero instalar cosas yo mismo en lugar de depender de cosas empaquetadas que a veces causan problemas, pero esa es solo una opción posible.

Andreas Jung
fuente
Estoy preguntando sobre el método preferido específicamente porque voy a dar estas instrucciones a una clase de 20 personas y no quiero engañarlas.
molinillo de café
3

Realmente no hay una sola "respuesta" a esta pregunta, pero definitivamente hay algunos conceptos útiles que pueden ayudarlo a tomar una decisión.

La primera pregunta que debe responderse en su caso de uso es "¿Quiero usar el sistema Python?" Si desea usar Python distribuido con su sistema operativo, entonces usar el método de instalación apt-get puede estar bien. Sin embargo, dependiendo del método de distribución del sistema operativo, aún debe hacer algunas preguntas más, como "¿Quiero instalar varias versiones de este paquete?" Si la respuesta es sí, probablemente no sea una buena idea usar algo como apt. Dpkg básicamente descomprimirá un archivo en la raíz del sistema de archivos, por lo que depende del mantenedor del paquete asegurarse de que el paquete se instale de manera segura bajo muy pocas suposiciones. En el caso de la mayoría de los paquetes de Debian, asumiría (alguien puede corregirme aquí) que simplemente descomprimen y proporcionan un paquete de nivel superior.

Por ejemplo, digamos que el paquete es "virtualenv", terminaría con /usr/lib/python2.x/site-packages/virtualenv. Si lo instala con easy_install, obtendrá algo como /usr/lib/python2.x/site-packages/virtualenv.egg-linkeso que podría indicar /usr/lib/python2.x/site-packages/virtualenv-1.2-2.x.eggque puede ser un directorio o un huevo comprimido. Pip hace algo similar aunque no usa huevos y en su lugar colocará el paquete de nivel superior directamente en el libdirectorio.

Puede que esté fuera de lugar, pero la cuestión es que cada método tiene en cuenta diferentes necesidades. Esta es la razón por la que herramientas como virtualenv son útiles, ya que le permiten proteger sus bibliotecas de Python de manera que pueda tener cualquier combinación que necesite de bibliotecas y versiones.

Setuptools también permite instalar paquetes como multiversión, lo que significa que no se dule_name.egg-linkcrea un solo mes . Para importar esos paquetes, debe usar pkg_resources y la __import__función.

Volviendo a su pregunta original, si está satisfecho con el sistema python y planea usar virtualenv y pip para construir entornos para diferentes aplicaciones, entonces instalar virtualenv y / o pip a nivel del sistema usando apt-get parece totalmente apropiado. Sin embargo, una advertencia es que si planea actualizar sus distribuciones de Python, eso puede tener un efecto dominó en sus virtualenvs si se vinculó a los paquetes del sitio del sistema.

También debo mencionar que ninguna de estas opciones es intrínsecamente mejor que las demás. Simplemente adoptan diferentes enfoques. Usar la versión del sistema es una forma excelente de instalar aplicaciones Python, pero puede ser una forma muy difícil de desarrollar con Python. Las herramientas de instalación y configuración fáciles son muy convenientes en un mundo sin virtualenv, pero si necesita usar diferentes versiones de la misma biblioteca, entonces también se vuelve bastante difícil de manejar. Pip y virtualenv realmente actúan más como una máquina virtual. En lugar de tener cuidado de instalar las cosas una al lado de la otra, simplemente crea un entorno completamente nuevo. La desventaja aquí es que más de 30 virtualenvs más tarde, es posible que haya usado bastante espacio en disco y desordenado su sistema de archivos.

Como puede ver, con las muchas opciones es difícil decir qué método usar, pero con un poco de investigación sobre sus casos de uso, debería poder encontrar un método que funcione.

Elarson
fuente
2

Dado que los virtualenvs contienen pip por defecto, casi nunca instalo pip globalmente. Lo que hago termina pareciéndose más 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

Luego procedo a instalar y configurar virtualenvwrapper a mi gusto y listo. También podría valer la pena echarle un vistazo al burrito virtualenv de Jeremy Avnet:

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

David Gouldin
fuente
Gracias por la captura. ;)
David Gouldin
3
¿Por qué se molesta con python-setuptools y luego distribuye cuando puede ir directamente a distribuir?
lambacck
@lambacck ¿Podría publicar lo que está describiendo en una respuesta separada (incluso si parece repetitivo)?
molinillo de café
2
Sin mencionar que en cualquier Ubuntu reciente (¿y Debian también? No estoy seguro) el paquete "python-setuptools" realmente ES distribuido, por lo que también puede omitir el paso específico de distribución.
Carl Meyer
@ coffee-grinder Distribution es una bifurcación de herramientas de configuración y, por lo tanto, proporciona la misma funcionalidad (y más). No se moleste en hacer "apt-get install python-setuptools" a menos que python-setuptools IS distribuya (como Carl indica que podría ser), en cuyo caso omita los pasos 2 y 3.
lambacck
2

@ericholscher dice en Twitter, "El de los documentos oficiales ..."

Es un gran punto, debes hacer lo que dicen los médicos.

Citado de las instrucciones de instalación oficiales de pip en 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 ...
molinillo de cafe
fuente
✓ Esta es la mejor opción si no quiere depender de los paquetes de distribución.
Tobu
2

A partir de los paquetes de distribución, puede usar:

sudo apt-get install python-virtualenv

que te permite crear virtualenvs, o

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

que le permite instalar paquetes arbitrarios en su directorio de inicio.

Si está acostumbrado a virtualenv, el primer comando le brinda todo lo que necesita (recuerde, pip está incluido y se instalará en cualquier virtualenv que cree).

Si solo desea instalar paquetes, el segundo comando le brinda lo que necesita. Usa pip así:

pip install --user something

y pon algo como

PATH=~/.local/bin:$PATH

en tu ~/.bashrc.


Si su distribución es antigua y no desea usar sus paquetes en absoluto (excepto el propio Python, probablemente), puede descargar virtualenv, ya sea como tarball o como script independiente:

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

Si su distribución es más del tipo de vanguardia, Python3.3 tiene capacidades integradas similares a virtualenv:

python3 -m venv ./venv

Esto se ejecuta mucho más rápido, pero las herramientas de configuración y pip no se incluyen.

Tobu
fuente
2

Para instalar pip en una mac (osx), el siguiente trazador de líneas funcionó muy bien para mí:

sudo easy_install pip
Brad Parks
fuente
2

En Raspbian, ni siquiera es necesario mencionarlo python2.7. De hecho, esta es la mejor manera de instalar pip si la versión de Python en menos de 2.7.9.

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

Gracias a @ tal-weiss

Hemant Kumar
fuente
1

Utilizo get-pip y virtualenv-burrito para instalar todo esto. No estoy seguro si se requiere 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
carl_kibler
fuente
1

En Debian, la mejor forma de hacerlo sería

sudo apt-get install python-pip

Yehonatan
fuente
1
La versión de Debian puede ser muy antigua. consulte esta respuesta para obtener más información: unix.stackexchange.com/a/182467/17425
georgiecasey
0

El primer método está bien. El único problema que puedo ver es que puede terminar con una versión anterior de setuptools (si el repositorio de apt no se ha mantenido actualizado ...

bradley.ayers
fuente