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

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?

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

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

Ahora corro 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 cambiada para instalar setuptools.

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

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

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

http://www.pip-installer.org/en/latest/installing.html 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 instrucciones de virtualenv lugar de las de todo el sistema. Las instrucciones de instalación easy_install han existido por más tiempo, pero ya no es necesario hacerlo de esa manera.

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 repository 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 sé si hay una manera de hacer esto sin Cygwin, pero espero que sí.

En Ubuntu 12.04 tuve buena suerte con el uso del administrador de paquetes:

 sudo apt-get install python-pip virtualenvwrapper 

No hay 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 las cosas individualmente para cada intérprete. Aparte de eso: prefiero instalar cosas yo mismo en lugar de depender de cosas preempaquetadas que a veces causan problemas, pero esa es solo una opción posible.

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 utilizar Python distribuido con su sistema operativo, entonces puede que usar el método apt-get install esté bien. Sin embargo, dependiendo del método de distribución del sistema operativo, todavía tiene que hacer algunas preguntas más, como “¿Deseo 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 desarticulará un archivo en la raíz del sistema de archivos, por lo que depende del encargado 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, asumo (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í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-link que puede 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 huevos y en su lugar colocará el paquete de nivel superior directamente en el directorio lib .

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

Setuptools también permite instalar paquetes como multiversión, lo que significa que no se ha creado un único mo dule_name.egg-link . Para importar esos paquetes, necesita 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 crear entornos para diferentes aplicaciones, entonces la instalación de virtualenv y / o pip a nivel del sistema utilizando apt-get parece totalmente apropiada. Sin embargo, una advertencia 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 intrínsecamente mejor que las otras. Simplemente toman diferentes enfoques. Usar la versión del sistema es una excelente manera de instalar aplicaciones de Python, aunque puede ser una forma muy difícil de desarrollar con Python. La instalación fácil y las herramientas de configuración son muy convenientes en un mundo sin virtualenv, pero si necesita usar diferentes versiones de la misma biblioteca, entonces también es 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, solo crea un entorno completamente nuevo. El inconveniente aquí es que más de 30 virtualenvs más tarde, es posible que haya usado bastante espacio en el 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.

Hacer esto:

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

Ver

Como 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 echar un vistazo a virtualenv-burrito de Jeremy Avnet:

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

@ericholscher dice en Twitter: “El de los documentos oficiales …”

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

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 ... 

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

 sudo apt-get install python-virtualenv 

que te permite crear virtualesenvs, o

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

lo 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á empaquetado y se instalará en cualquier virtualenv que cree).

Si solo desea instalar paquetes, el segundo comando le brinda lo que necesita. Usa pip de esta manera:

 pip install --user something 

y poner algo como

 PATH=~/.local/bin:$PATH 

en tu ~/.bashrc .


Si su distribución es antigua y no desea utilizar sus paquetes (excepto en el caso de Python, probablemente), puede descargar virtualenv, ya sea como un archivo comprimido o como un 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 similares a virtualenv incorporadas:

 python3 -m venv ./venv 

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

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

 sudo easy_install pip 

En Raspbian, ni siquiera es necesario mencionar python2.7 . De hecho, esta es la mejor manera de instalar pip si la versión de Python está 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

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

Yo uso 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 

En Debian la mejor manera de hacerlo sería

sudo apt-get install python-pip

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