什么是pip的`--no-cache-dir`有用吗?

时间:2017-08-09 15:20:36

标签: python pip

我最近看到在Docker文件中使用了--no-cache-dir。我以前从未见过那面旗帜而且帮助没有解释它:

 --no-cache-dir              Disable the cache.
  1. 问题:什么是缓存?
  2. 问题:用于缓存的内容是什么?
  3. 问题:我为什么要禁用它?

5 个答案:

答案 0 :(得分:35)

  1. 缓存:隐藏或将来使用
  2. 用于存储通过pip安装的模块的安装文件(.whl等)。
  3. 如果您的硬盘驱动器上没有空间,则可能需要将其禁用
  4. 文档链接

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

答案 1 :(得分:18)

我认为在构建Docker映像时有充分的理由使用--no-cache-dir。缓存通常在Docker映像中没有用,并且您可以通过禁用缓存来缩小映像大小。

答案 2 :(得分:1)

禁用pip缓存的另一个原因-如果您以不存在的用户身份运行pip,则将创建其主目录,但该目录由root拥有。

在chroot中构建Amazon AMI时,这会发生在我们身上-pip以构建器机器上的用户身份运行,而不是在构建AMI的chroot监狱中。这是有问题的,因为特定用户现在无法SSH到刚刚构建的内容,因为他们无法读取其.ssh目录。

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

答案 3 :(得分:1)

如果您的DockerFile中具有python依赖项,请减小docker映像的大小,因为您的私有注册表/人工工厂或部署服务可能会有大小限制。

答案 4 :(得分:0)

如果不使用--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可以正常工作。