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


111

我最近看到--no-cache-dir在Docker文件中使用了它。我以前从未见过该标志,并且帮助没有解释它:

 --no-cache-dir              Disable the cache.
  1. 问题:缓存了什么?
  2. 问题:高速缓存用于什么?
  3. 问题:为什么要禁用它?

第3季的远景:节省一些RAM?
Ma0

4
关于该文档的文档非常丰富:pip.pypa.io/en/stable/reference/pip_install/#caching
emredjan

2
第一个Google搜索结果对使用情况进行了很好的描述pip.pypa.io/en/stable/reference/pip_install
mikea

3
在构建docker映像时,您希望它变亮。这有助于避免缓存文件使图像过大。
Victor Lamoine

2
@mikea具有讽刺意味的是,对于pip no-cache-dir,这是第一个结果。
hlongmore '18 -10-1

Answers:


90
  1. 缓存为:藏匿起来以备将来使用
  2. 用于
  • 存储.whl通过pip安装的模块的安装文件(等)
  • 存储源文件(.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


为什么要存储安装文件?
马丁·托马

7
为了避免一次又一次的下载。假设您卸载了模块,则在下次安装该模块时,它将使用缓存目录中的文件
堆栈

7
喔好吧。因此,对于仅用于部署的docker映像(因此没有“手动”操作),没有理由不使用--no-cache-dir,对吗?
Martin Thoma

6
是@MartinThoma,在生产docker映像上,您想使用pip --no-cache-dir,因为没有其他人会安装任何软件包,并且存储空间甚至更有价值...
Ozgur Ozturk

2
哈哈,我不认为OP的意思是“'缓存'是什么意思?” 问题1
Arel

50

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


7
您可以ENV PIP_NO_CACHE_DIR=1在docker中使用python 3.6.10及更高版本的图像
Levon

9

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

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

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


4

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


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可以正常工作。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.