pip's '——no-cache-dir '有什么用?

我最近看到--no-cache-dir在Docker文件中被使用。我从没见过那面旗子,工作人员也不解释

 --no-cache-dir              Disable the cache.
  1. 问题:缓存的是什么?
  2. 问题:缓存的用途是什么?
  3. 问题:我为什么要禁用它?
205569 次浏览
  1. 缓存是:储存起来或将来使用
  2. 用于
  • 存储通过pip安装的模块的安装文件(.whl等)
  • 存储源文件(.tar.gz等),以避免在未过期时重新下载
  1. 可能的原因你可能想要禁用缓存:
  • 你的硬盘没有空间了
  • 之前使用意想不到的设置运行pip install
      <李>如:
      • 之前运行export PYCURL_SSL_LIBRARY=nsspip install pycurl
      • 要运行export PYCURL_SSL_LIBRARY=opensslpip install pycurl --compile --no-cache-dir
  • 你想让Docker映像尽可能小

文档链接

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

禁用pip缓存的另一个原因是,如果您以一个还不存在的用户运行pip,则将创建他们的主目录,但由root拥有。

当在chroot中构建Amazon AMI时,我们会遇到这种情况——pip作为构建器机器上的用户运行,而不是在构建AMI的chroot监牢中运行。这是有问题的,因为特定的用户现在不能ssh到他们无法读取的刚刚构建的.ssh目录。

我想不出pip作为一个不存在的用户运行的任何其他原因,所以这是一个非常极端的情况。

我认为在构建Docker映像时使用--no-cache-dir是一个很好的理由。缓存在Docker映像中通常是无用的,你可以通过禁用缓存来缩小映像大小。

如果你的DockerFile中有python依赖,减少你的docker镜像大小,因为你的私有注册中心/artifactories或部署服务可能有大小限制。

如果我不使用--no-cache-dir选项,我得到安装一些pip包的权限错误。

Building wheels for collected packages: pyyaml, bottleneck, nvidia-ml-py3
WARNING: Building wheel for pyyaml failed: [Errno 13] Permission denied: '/home/user/.cache/pip/wheels/b1'
WARNING: Building wheel for bottleneck failed: [Errno 13] Permission denied: '/home/user/.cache/pip/wheels/92'
WARNING: Building wheel for nvidia-ml-py3 failed: [Errno 13] Permission denied: '/home/user/.cache/pip/wheels/7f'

由于某些原因,chown /.cache文件夹没有帮助,但对于--no-cache-dir,它可以正常工作。