Easy_install caché de archivos descargados

¿Hay alguna forma de configurar easy_install para evitar tener que descargar los archivos nuevamente cuando falla la instalación?

pip ( http://pypi.python.org/pypi/pip/ ) es un reemplazo directo de la herramienta easy_install y puede hacer eso.

Simplemente ejecute easy_install pip y establezca una variable de entorno PIP_DOWNLOAD_CACHE en la ruta que desea que pip almacene los archivos. Tenga en cuenta que la memoria caché no funcionará con las dependencias que realizan el pago desde un repository de código fuente (como svn / git / hg / bzr).

Luego usa pip install lugar de easy_install

Aquí está mi solución usando pip, gestionando incluso la instalación de paquetes binarios y utilizable tanto en Linux como en Windows. Y según se solicite, limitará la descarga de PyPi al mínimo, y como ventaja adicional, en Linux, permite acelerar la instalación repetida de paquetes que generalmente requieren comstackción a una fracción de segundo.

La instalación toma pocos pasos, pero creo que vale la pena hacerlo.

Crear archivo de configuración de pip

Cree el archivo de configuración de pip (en linux: ~ / .pip / pip.conf, en Windows% HOME% \ pip \ pip.ini)

Mi uno tiene este contenido:

 [global] download-cache = /home/javl/.pip/cache find-links = /home/javl/.pip/packages [install] use-wheel = yes [wheel] wheel-dir = /home/javl/.pip/packages 

cache directorio de cache – va automáticamente

El directorio de cache obtendrá una versión en caché de los datos descargados desde pypi cada vez, intente obtener algún paquete de pypi. Es fácil llevarlo allí (no se necesita atención especial), pero tenga en cuenta que, desde el punto de vista de la pip, se trata simplemente de datos descargados de PyPi, no de paquetes, por lo que en caso de que use una opción --no-index , no trabajará.

pip install --download para completar packages dir

El directorio de packages es el lugar para colocar archivos de paquetes reales. Por ejemplo, para mi paquete favorito plac , haría:

$ pip install –download ~ / .pip / packages plac

y el archivo del paquete plac aparecería en ese directorio. Incluso puede usar el archivo -r requirements.txt para hacer esto con varios paquetes a la vez.

Estos paquetes se utilizan incluso con $ pip install --no-index .

Evitar la comstackción repetida del mismo paquete en Linux

Por lxml paquete lxml requiere cumplimiento, y la descarga y comstackción puede demorar entre 45 segundos y minutos. Usando el formato de rueda, puede ahorrar mucho aquí.

Instala la herramienta de la wheel , si aún no la tienes:

 $ pip install wheel 

Cree la rueda para lxml (suponiendo que haya logrado instalar lxml en el pasado; se requieren algunas libs en el sistema para instalarlo):

 $ pip wheel lxml 

Esto va más allá de la descarga, comstackción, pero finalmente da como resultado que el archivo lxml whl esté en el directorio de packgages de packgages .

Desde entonces

 $ pip install lxml 

o incluso más rápido

 $ pip install --no-index lxml 

Tomará una fracción de segundo, ya que utiliza el paquete con formato de rueda.

Prepare el paquete de ruedas desde el paquete de configuración de ventana exe

(Nota: esto puede prepararse incluso en una máquina Linux, no hay comstackción, solo un poco de reenvasado del archivo exe al whl ).

  1. descargue la forma exe del paquete desde pypi, por ejemplo:

    $ wget https://pypi.python.org/packages/2.7/l/lxml/lxml-3.2.3.win32-py2.7.exe#md5=14ab978b7f0a3382719b65a1ca938d33 $ dir lxml-3.2.3.win32-py2.7 .exe

  2. convertirlo en whl

    $ wheel convert lxml-3.2.3.win32-py2.7.exe $ dir lxml-3.2.3.win32-py2.7.exe lxml-3.2.3-cp27-none-win32.whl

  3. Pruébalo:

    $ pip install lxml

o

 $ pip install --no-index lxml 

será muy rápido.

Tenga en cuenta que la wheel convert puede hacer exactamente la misma conversión para paquetes con formato de huevo.

Deje que easy_install y setup.py install reutilicen sus packages dir

easy_install y $ python setup.py install no parecen ofrecer caché de descarga, pero permiten usar los paquetes que tenemos en nuestro directorio de packages .

Para hacerlo, edite el archivo de configuración para estas dos herramientas:

En Linux: $HOME/.pydistutils.cfg

En Windows: %HOME%\pydistutils.cfg

En mi caso tengo aquí en /home/javl/.pydistutils.cfg :

 [easy_install] find_links = /home/javl/.pip/packages 

Esta configuración puede ayudar incluso a algunos casos de llamadas de pip install de pip install , cuando pip intenta instalar un paquete, declarando la dependencia de otros. Al delegar esta tarea a la llamada a setup.py , sin la configuración .pydistutils.cfg se descargaría el archivo desde PyPi.

Desafortunadamente, el formato de la rueda no es compatible en este caso (que yo sepa).