python - Linux:本地存储主要被 pip 的过多缓存消耗
问题描述
问题
我最近遇到了一个与内存相关的问题,python 脚本尝试执行但收到以下错误:
Traceback (most recent call last) :
File "FiveMinutes.py", line 56, in <module>
main()
File "FiveMinutes.py", line 41, in main
f.write('hello')
OSError: [Errno 28] No Space left on device
然而,这对我来说只是一个标志,表明磁盘空间已达到最大值。所以我使用 进行了检查df
,如下所示:
/dev/sda1 46377792 44369504 0 100% /
这表明磁盘已满。所以我为虚拟机(GCP 计算引擎)分配了 15GB 的磁盘。这很快就被操作系统消耗掉了,磁盘又被刷爆了。
我试过的
经过调查,我发现所有数据都开始存储在系统中.cache/pip/http
。这表明:
root@serval-1:~/.cache/pip/http# du --max-depth=1 -h
42M ./3
25M ./c
13M ./8
22M ./4
15M ./a
1.4M ./e
20M ./6
2.4M ./9
6.6M ./d
57M ./1
3.2M ./7
676K ./5
16M ./b
2.9M ./2
1.2M ./f
660K ./0
226M .
(该http
模块在我的代码库中经常使用,因此在这个问题中显示它的所有用途不会那么有用,尽管如果需要的话很乐意提供)。
作为一项临时措施,我已将其删除.cache
并重新启动了 VM。这奏效了,整体存储量下降了50%。像这样:
/dev/sda1 46377792 21769340 22600164 50% /
但不提供对行为的解释或防止发生。
任何关于pip\http
它是什么以及它为什么会这样表现的信息对于永久措施都是非常有用的。
解决方案
推荐阅读
- python - python中打印列表更顺眼
- php - 用php分页
- tableau-api - 如何在 Tableau 仪表板上创建响应式布局?
- netsuite - Netsuite 打印个人声明
- java - Axon - SubscribingEvent 与 TrackingEvent 处理器
- spring-boot - 有没有办法在使用 Spock 框架时使用 @MockBean 注释
- java - 如何将用户信息从数据库添加到“inMemoryAuthentication”
- python - 在“............”之前提取字符串
- ruby-on-rails - 查询以通过关联从 has_many 检索对象
- node.js - 在我的服务器上的 Docker 容器中运行 Node-Red - 在哪里存储数据文件 (csv)?