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
$ pip install django
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
$ pip install django --use-mirrors
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
$ pip install django --index-url=http://c.pypi.python.org/simple/
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
sudo vim ~/.pip/pip.conf
En mi caso el archivo de configuración queda como:
[global]
timeout = 200
index-url=http://c.pypi.python.org/simple/
Ahora, cada vez que corra el comando
$ pip install django
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.
Gracias a nombre de los programadores