2012-04-26 31 views
53

¿Cómo se evita que PIP vuelva a descargar paquetes descargados previamente? Estoy probando la instalación de matplotlib, un paquete de 11MB que depende de varios paquetes específicos de la distribución. Cada vez que ejecuto pip install matplotlib, vuelvo a descargar matplotlib. ¿Cómo paro esto?Cómo almacenar en caché los paquetes PIP descargados

Respuesta

54

Puede usar una variable de entorno específica PIP_DOWNLOAD_CACHE y hacer que apunte a un directorio donde se almacenarán sus paquetes. Si van a instalarse nuevamente, se tomarán de este directorio.

Parece haber también una opción adicional para PIP pip --download-cache que debería hacer algo similar, pero nunca lo he intentado yo mismo. Para su ejemplo, para evitar descargar de matplotlib cada vez, haría lo siguiente:

pip install --download-cache /path/to/pip/cache matplotlib 

¿Eso responde a su pregunta?

+0

No estoy seguro si PIP también lo hace, pero con ' easy_install' si tiene el paquete como un archivo '.tar' (o presumiblemente zip?) en el directorio local, intentará usar ese primero. –

+2

Mire también [pip-accel] (https://pypi.python.org/pypi/pip-accel). Es una solución nueva y mejor para este problema. – qris

+8

a partir de pip 8 '--download-cache' se eliminó, pip debería estar usando caché por defecto que se puede desactivar con' --no-cache-dir' – Ski

8

Se podría

# download and extract package to build path 
pip install --no-install matplotlib 

# the build path could be found by 
pip install --help|grep Unpack\ packages\ into -A 2 

# then rm pip-delete-this-directory.txt inside the build path 
# this prevent pip from removing package from the build directory after install 
# you could check the content of the file 
rm build/pip-delete-this-directory.txt 

# from now on you could install matplotlib quickly 
# this uses single build directory 
# and can speed up compiling by caching intermediate objects. 
pip install --no-download matplotlib 

Además, se puede descargar manualmente el paquete

pip install -d dir_for_packages matplotlib 

Luego instalarlo por ONU-alquitrán y python setup install más tarde.

Los pip install --download-cache obras de una manera similar w/comprobación adicional: primero, es buscar la versión más reciente o especificada del paquete de destino desde la web, si la búsqueda tiene como resultado y no se almacena en caché el paquete en el directorio especificado por download-cache, la el paquete en caché se usará en lugar de descargar. Por ejemplo,

pip install --download-cache . pymongo 

descargará pymongo paquete de directorio actual:

http%3A%2F%2Fpypi.python.org%2Fpackages%2Fsource%2Fp%2Fpymongo%2Fpymongo-2.1.1.tar.gz 
http%3A%2F%2Fpypi.python.org%2Fpackages%2Fsource%2Fp%2Fpymongo%2Fpymongo-2.1.1.tar.gz.content-type 
106

para nuevas versiones Pip:

versiones más recientes Pip por defecto ahora descargas de caché. Ver esta documentación:

https://pip.pypa.io/en/stable/reference/pip_install/#caching

Para versiones antiguas Pip:

Crear un archivo de configuración llamado ~/.pip/pip.conf y añada el siguiente contenido:

[global] 
download_cache = ~/.cache/pip 

En un comando:

printf '[global]\ndownload_cache = ~/.cache/pip\n' >> ~/.pip/pip.conf 
+0

Fresco, fácil y no es necesario recordar agregar el parámetro cada vez. Perdí MUCHAS gb de descargas de Gb. Gracias. – erm3nda

+0

Gracias, si utiliza pip3 para descargar los requisitos y recibe una advertencia de texto amarillo, puede mkdir ~/.cache/pip y la advertencia desaparecerá. –

Cuestiones relacionadas