被遗忘的 Python 环境:快速清理磁盘
Source: Dev.to
沉默增长的未被监控
虚拟环境起初看似很小,但会迅速成倍增长:
- 测试项目
- 黑客马拉松仓库
- 教程克隆
- 临时分支
- 从未关闭的概念验证(PoC)
在实际的依赖管理(框架、数据库、工具)下,每个环境可能占用数百 MB,甚至 GB。
技术垃圾的隐藏位置
不仅仅是 .venv/:
- 缓存的 Poetry 环境
- conda 环境
.tox文件夹- 分散的
__pycache__目录 dist//build/打包产物
这类文件会悄然增多,因为几乎没有默认工作流会自动清理它们。
专业的四步清理策略
1) 删除前先盘点
先看到,后行动。
2) 按类型和年龄分类
删除昨天创建的环境和删除180天未触碰的环境并不是同一件事。
3) 安全分批清理
先从缓存和产物开始,然后再处理旧的环境。
4) 自动化维护
如果不自动化,问题会再次出现。
KillPy 作为维护组件(不做广告)
在完成盘点后,难点在于找到分散在各种工具和仓库中的环境,并按年龄/大小进行排序。 KillPy 可以扫描指定路径并在删除前列出候选项。
实用示例:
# 查看使用概览
killpy stats --path ~
# 列出旧环境
killpy list --older-than 120
# 模拟清理而不实际删除
killpy delete --type cache --dry-run
对大多数开发者而言,每月一次的检查足以保持本地环境健康。
常见错误
- 盘点前就直接删除。
- 在未检查最近访问时间的情况下删除正在使用的环境。
- 项目运行时清理缓存。
- 不对锁文件进行版本管理,导致后期无法重新构建环境。
预防最佳实践
为每个项目保持统一标准
- 在仓库根目录使用
.venv。 - 编写并记录官方命令。
- 避免在仓库外随意创建环境。
让依赖管理可复现
- 保持
pyproject.toml健康。 - 每次依赖变动后更新锁文件。
CI/CD 黄金规则
- 从头构建环境。
- 不复用上一次作业的残余。
- 使用显式命令。
稳健示例:
python -m venv .venv
.venv/bin/python -m pip install -e ".[dev]"
.venv/bin/python -m pytest
15 分钟月度操作手册
- 按环境类型查看存储大小。
- 删除缓存和构建产物。
- 检查 90 天以上未使用的环境。
- 确认活跃项目能从锁文件干净地重建。
遵循此手册,你可以显著降低维护摩擦。
最后洞见
掌握 Python 虚拟环境并不止于创建 .venv/。真正的成熟在于闭环:
- 创建得好
- 维护得好
- 清理得好
这就是专业运维的模样。
结论
下次磁盘空间告急时,别先怪 Docker。先检查你的 Python 环境——你可能在被废弃的环境中积累的技术债务,比本月写的代码还多。
如果陈旧的环境持续吞噬磁盘空间,安排定期的盘点 + 清理;如果想让扫描/列出步骤自动化,KillPy 是一个可选方案。