Usando pip con servidores alternativos

Desde que uso pip para instalar los paquetes de python dentro de mis entornos virtuales de desarrollo (virtualenv), me he dado cuenta que instalar Django es particularmente difícil.

Por ejemplo, cuando se ejecuto el comando

La respuesta que se obtengo, luego de esperar un par de minutos, es que la conexión con el servidor ha expirado (timeout) y el paquete no se ha instalado.

Por default, pip trata de descargar los paquetes del servidor http://pypi.python.org/simple/ así que mi primer intento por solventar este problema es usar la opción –use-mirrors del comando para consultar un servidor alternativo

Pero nuevamente, la conexión expira ya que el servidor alternativo consultado http://a.pypi.python.org/simple/ tampoco responde en un tiempo razonable.

Buscando por internet descubrí que es posible definir manualmente un servidor alternativo diferente gracias a la opción –index-url

Si este mirror (servidor espejo) tampoco funciona, es posible probar con cualquiera de los siguientes servidores hasta obtener una conexión con el repositorio de paquetes de pip:

  • http://a.pypi.python.org/simple/
  • http://b.pypi.python.org/simple/
  • http://c.pypi.python.org/simple/
  • http://d.pypi.python.org/simple/
  • http://e.pypi.python.org/simple/
  • http://f.pypi.python.org/simple/
  • http://g.pypi.python.org/simple/

Para poder ver la disponibilidad y tiempo de respuesta de cada uno de estos mirrors se puede consultar esta página web: http://www.pypi-mirrors.org/

Como escribir siempre la dirección completa del mirror es tedioso, es posible definir como servidor default al mirror C modificando el archivo de configuración global de pip

En mi caso el archivo de configuración queda como:

Ahora, cada vez que corra el comando

Estaré consultando el repositorio desde el mirror C y no desde el servidor estándar

Espero que este pequeño tip ayude a otros programadores a no perder tiempo en la configuración de sus entornos virtuales.

Deja un comentario