Python Toolchains
pip, Conda, and uv caches: hidden Python storage across projects
Python environments stay fast by caching aggressively. Over time, pip/Conda/uv caches and stale virtual environments can quietly consume large chunks of SSD space.
Updated:
Read time: 7 min
Why this silently grows
Package downloads, extracted wheels, and environment artifacts are reused for speed. On Macs with multiple projects and experiments, the same dependencies are often cached in multiple places, and old virtual environments remain long after repos are archived.
How Free Mac Space finds it
Free Mac Space scans Python-heavy cache roots such as ~/.cache/pip, ~/Library/Caches/pip, ~/miniconda3/pkgs, ~/anaconda3/pkgs, ~/.conda/pkgs, ~/.cache/uv, and ~/.local/share/uv. Results are grouped by path family so you can quickly see whether package caches or environment folders are driving growth.
How cleanup is handled
You can review size, path, and recency before selecting stale cache directories. Cleanup actions remain Trash-first and pass root validation checks so only approved paths are eligible.
Safety boundary
Active virtual environments may still be tied to scheduled jobs or older projects. Keep environments connected to production workflows and remove stale ones in stages.
Paths covered in Free Mac Space
- ~/.cache/pip
- ~/Library/Caches/pip
- ~/miniconda3/pkgs
- ~/anaconda3/pkgs
- ~/.conda/pkgs
- ~/.cache/uv
- ~/.local/share/uv
- ~/.virtualenvs
Recommended monthly check
- Sort by size and remove stale package caches first.
- Keep environment folders used by active services or notebooks.
- Re-run the scan to verify reclaimed space and avoid over-cleaning.
Step-by-step workflow
1. Identify why Python Toolchains storage keeps growing
Package downloads, extracted wheels, and environment artifacts are reused for speed. On Macs with multiple projects and experiments, the same dependencies are often cached in multiple places, and old virtual environments remain long after repos are archived.
2. Inspect the highest-impact paths first
Free Mac Space scans Python-heavy cache roots such as ~/.cache/pip, ~/Library/Caches/pip, ~/miniconda3/pkgs, ~/anaconda3/pkgs, ~/.conda/pkgs, ~/.cache/uv, and ~/.local/share/uv. Results are grouped by path family so you can quickly see whether package caches or environment folders are driving growth. Priority paths: ~/.cache/pip, ~/Library/Caches/pip, ~/miniconda3/pkgs, ~/anaconda3/pkgs, ~/.conda/pkgs, ~/.cache/uv, ~/.local/share/uv, ~/.virtualenvs.
3. Confirm the safety boundary before acting
Active virtual environments may still be tied to scheduled jobs or older projects. Keep environments connected to production workflows and remove stale ones in stages.
4. Apply a review-first cleanup workflow
You can review size, path, and recency before selecting stale cache directories. Cleanup actions remain Trash-first and pass root validation checks so only approved paths are eligible.
5. Monthly validation step 1
Sort by size and remove stale package caches first.
6. Monthly validation step 2
Keep environment folders used by active services or notebooks.
7. Monthly validation step 3
Re-run the scan to verify reclaimed space and avoid over-cleaning.
Frequently asked questions
What hidden storage sources are covered for Python Toolchains?
Primary sources include pip wheel cache, Conda package cache, uv cache, virtual environment folders. Package downloads, extracted wheels, and environment artifacts are reused for speed. On Macs with multiple projects and experiments, the same dependencies are often cached in multiple places, and old virtual environments remain long after repos are archived.
Which macOS paths should I inspect first?
Start with: ~/.cache/pip, ~/Library/Caches/pip, ~/miniconda3/pkgs, ~/anaconda3/pkgs, ~/.conda/pkgs, ~/.cache/uv, ~/.local/share/uv, ~/.virtualenvs. Free Mac Space scans Python-heavy cache roots such as ~/.cache/pip, ~/Library/Caches/pip, ~/miniconda3/pkgs, ~/anaconda3/pkgs, ~/.conda/pkgs, ~/.cache/uv, and ~/.local/share/uv. Results are grouped by path family so you can quickly see whether package caches or environment folders are driving growth.
How can I reduce this storage safely?
You can review size, path, and recency before selecting stale cache directories. Cleanup actions remain Trash-first and pass root validation checks so only approved paths are eligible. Active virtual environments may still be tied to scheduled jobs or older projects. Keep environments connected to production workflows and remove stale ones in stages.
What should the monthly review checklist look like?
Sort by size and remove stale package caches first. Keep environment folders used by active services or notebooks. Re-run the scan to verify reclaimed space and avoid over-cleaning.