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


Es esto, lo que la gente parece recomendar más a menudo:

$ 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?

Author: Hugo Tavares, 2011-04-07

16 answers

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

Comenzando con v1.5.1, pip no requiere setuptools antes de ejecutarse get-pip.py. Además, si setuptools (o distribute) no está instalado, get-pip.py instalará setuptools para usted.

Ahora corro el regular:

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

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

EDITAR 25-Jul-2013:
Se ha cambiado la URL de setuptools install.

EDITAR 10-Feb-2014:
Eliminado setuptools instalar (gracias @Ciantic)

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

EDITAR 1-Marzo-2015:
Pip ahora se incluye con Python

 88
Author: Tal Weiss,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-13 10:55:06

Http://www.pip-installer.org/en/latest/installing.html {[5] } es realmente la respuesta canónica a esta pregunta.

Específicamente, las instrucciones de 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 virtualenv instrucciones en lugar de las de todo el sistema. Las instrucciones easy_install han existido por más tiempo, pero ya no es necesario hacerlo de esa manera.

 21
Author: Richard Jones,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-02-16 22:11:42

Esta respuesta viene de @webology en Twitter:

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

Mis notas añadidas:

  • 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 del último paso e instalarlo manualmente de alguna manera. No se si hay una manera de hacer esto sin Cygwin, pero eso espero.
 16
Author: coffee-grinder,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-04-07 19:24:25

En Ubuntu 12.04 he tenido buena suerte solo usando el gestor de paquetes:

sudo apt-get install python-pip virtualenvwrapper
 4
Author: Jason McVetta,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-10-03 03:37:16

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

 3
Author: Andreas Jung,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-04-07 18:40:26

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 necesita ser respondida 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, todavía tiene que hacer algunas preguntas más, como "¿Quiero instalar varias versiones de este paquete?"Si la respuesta es sí, entonces probablemente no sea una buena idea usar algo como apt. Dpkg prácticamente solo 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 forma segura bajo muy pocas suposiciones. En el caso de la mayoría de los paquetes debian, yo asumiría (alguien puede sentirse libre de corregirme aquí) que simplemente descomprimen y proporcionan un paquete de nivel superior.

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

Podría estar fuera de los caminos, pero el punto es que cada método tiene en cuenta diferentes necesidades. Es por eso que herramientas como virtualenv son útil ya que le permiten sandbox sus bibliotecas de Python de tal manera que puede tener cualquier combinación que necesite de bibliotecas y versiones.

Setuptools también permite instalar paquetes como multiversión, lo que significa que no hay un module_name.egg-link singular creado. Para importar esos paquetes necesitas usar pkg_resources y la función __import__.

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

También debo mencionar que ninguna de estas opciones es inherentemente mejor que las otras. Simplemente toman diferentes enfoques. El uso de la versión del sistema es una excelente manera de instalar aplicaciones Python, sin embargo, puede ser una forma muy difícil de desarrollar con Python. Fácil instalación y setuptools es muy conveniente 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 lado a lado, solo crea un entorno completamente nuevo. La desventaja aquí es que más de 30 virtualenvs más tarde es posible que haya utilizado bastante un poco de 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 en sus casos de uso, debería poder encontrar un método que funcione.

 3
Author: elarson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-04-08 17:27:43

Dado que los virtualenvs contienen pip por defecto, casi nunca instalo pip globalmente. Lo que hago termina pareciendo más como:

$ 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 me voy. también podría valer la pena echar un vistazo a virtualenv-burrito de Jeremy Avnet:

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

 2
Author: David Gouldin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-04-07 19:01:42

@ericholscher dice en Twitter, "El que está en los documentos oficiales.."

Es un gran punto, usted debe hacer lo que dicen los documentos.

Citado de las instrucciones oficiales de instalación 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 ...
 2
Author: coffee-grinder,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-04-08 17:18:23

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

sudo apt-get install python-virtualenv

Que le permite crear virtualenvs, o

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

Que le permite instalar paquetes arbitrarios en su directorio personal.

Si está acostumbrado a virtualenv, el primer comando le da 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 da lo que necesita. Usar pip like esto:

pip install --user something

Y poner algo como

PATH=~/.local/bin:$PATH

En su ~/.bashrc.


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

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

Si tu distro es más del tipo bleeding edge, Python3. 3 tiene habilidades virtualenv-like incorporadas:

python3 -m venv ./venv

Esto se ejecuta mucho más rápido, pero setuptools y pip no están incluidos.

 2
Author: Tobu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-06-23 02:31:53

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

sudo easy_install pip
 2
Author: Brad Parks,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-27 17:24:19

Haz esto:

curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py"
python get-pip.py
pip install virtualenv

Véase

 2
Author: asmaier,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-14 10:39:36

En Raspbian, ni siquiera hay necesidad de mencionar 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

 2
Author: Hemant Kumar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-08-25 11:11:02

Https://github.com/pypa/pip/raw/master/contrib/get-pip.py es probablemente el camino correcto ahora.

 1
Author: coderanger,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-04-07 18:52:50

Utilizo get-pip y virtualenv-burrito para instalar todo esto. No estoy seguro de si python-setuptools es necesario.

# 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
 1
Author: carl_kibler,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-05-14 10:52:14

En Debian la mejor manera de hacerlo sería

sudo apt-get install python-pip

 1
Author: Yehonatan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-12-20 12:37:05

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

 0
Author: bradley.ayers,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-04-07 18:39:05