¿Para qué sirve `--no-cache-dir` de pip?

Resuelto Martin Thoma asked hace 7 años • 6 respuestas

Recientemente vi su --no-cache-diruso en un archivo Docker. Nunca había visto esa bandera antes y la ayuda no la explica:

 --no-cache-dir              Disable the cache.
  1. Pregunta: ¿Qué se almacena en caché?
  2. Pregunta: ¿Para qué se utiliza el caché?
  3. Pregunta: ¿Por qué querría desactivarlo?
Martin Thoma avatar Aug 09 '17 22:08 Martin Thoma
Aceptado
  1. En caché es : almacenar en un lugar oculto o para uso futuro
  2. Usado para
  • almacenar los archivos de instalación ( .whl, etc) de los módulos que instala a través de pip
  • almacene los archivos fuente ( .tar.gz, etc.) para evitar volver a descargarlos cuando no hayan caducado
  1. Posible motivo por el que es posible que desees desactivar el caché:
  • no tienes espacio en tu disco duro
  • ejecutado previamente pip installcon configuraciones inesperadas
    • p.ej:
      • ejecutado previamente export PYCURL_SSL_LIBRARY=nssypip install pycurl
      • quiero una nueva carrera export PYCURL_SSL_LIBRARY=opensslypip install pycurl --compile --no-cache-dir
  • desea mantener una imagen de Docker lo más pequeña posible

Enlaces a documentación

https://pip.pypa.io/en/stable/reference/pip_install/#caching – @emredjan https://pip.pypa.io/en/stable/reference/pip_install/ - @mikea

Stack avatar Aug 09 '2017 15:08 Stack

Creo que hay una buena razón para utilizarlo --no-cache-dircuando se crean imágenes de Docker. El caché suele ser inútil en una imagen de Docker y definitivamente puede reducir el tamaño de la imagen deshabilitando el caché.

Philip Tzou avatar Aug 14 '2019 07:08 Philip Tzou

Otra razón para deshabilitar el caché de pip: si ejecuta pip como un usuario que aún no existe, se creará su directorio de inicio, pero será propiedad de root.

Esto nos sucede cuando creamos AMI de Amazon en un chroot: pip se ejecuta como un usuario que existe en la máquina del creador, pero no en la cárcel de chroot donde se construye el AMI. Esto es problemático ya que ese usuario específico ahora no puede acceder mediante ssh a lo que se acaba de crear, ya que no puede leer su directorio .ssh.

Sin embargo, no se me ocurre ninguna otra razón por la que pip se ejecute como un usuario que no existe, por lo que es en gran medida un caso extremo.

PacketFiend avatar Mar 07 '2019 22:03 PacketFiend