conda clean --packages 是释放空间最有效的一步,因为它专门删除未被任何环境硬链接引用的解压包目录(如 pytorch-2.6.0-py310h.../),这些解压文件占 pkgs 目录主体空间,清理后不破坏现有环境且显著节省磁盘。

直接删 pkgs 文件夹最省事,但会破坏硬链接加速机制;真正安全又高效的清理,得靠 conda clean 分步操作。
conda clean --packages 为什么必须先跑这一条
这是释放空间最有效的一步,因为 pkgs 目录里真正占地方的,是那些解压后的包文件(比如 pytorch-2.6.0-py310h.../ 这类目录),不是 .tar.bz2 压缩包。这些解压包只有被至少一个现存环境“硬链接”引用时才安全保留;一旦没环境再用它,conda clean --packages 就能识别并删掉。
- 执行前建议加
--dry-run看一眼:conda clean --packages --dry-run - Windows 用户注意:该命令在 Anaconda Prompt 中运行才生效,普通 CMD 或 PowerShell 可能找不到 conda
- 别指望它一次清完——如果之前反复创建/删除过 PyTorch 环境,可能要跑两三次才能把所有旧版本包清干净
conda clean --tarballs 删的是什么、什么时候删
--tarballs 只删 .tar.bz2 下载包,比如 pytorch-2.6.0-py310h...tar.bz2。这些文件装完就不再需要,但 conda 默认不自动删,长期堆积下来动辄几 GB。
- 它和
--packages不冲突,可以一起跑:conda clean --packages --tarballs - 如果你经常离线复现环境,留着 .tar.bz2 有好处;否则建议定期清理
- 注意:删了之后再装同版本包,conda 会重新下载,不是从缓存恢复
CondaVerificationError 报错时,缓存清理要多做一步
遇到类似 CondaVerificationError: The package for openssl appears to be corrupted,说明某个包的校验失败,大概率是缓存损坏。这时候光清包不够,还得重置索引缓存。
- 先跑
conda clean --index-cache - 再手动清空
~/.conda/pkgs/cache/(Linux/macOS)或%USERPROFILE%\.conda\pkgs\cache\(Windows) - 最后补一句
conda update conda,避免因旧版 conda 解析逻辑缺陷导致误判
为什么不能直接 rm -rf ~/.conda/pkgs
看起来最彻底,实际埋雷最多。conda 的硬链接机制依赖 pkgs 里的原始文件:新环境创建时,它不是复制文件,而是对 pkgs 中对应目录做硬链接。一旦你暴力清空 pkgs,后续所有 conda create 都会退化成全量拷贝,速度变慢、磁盘占用翻倍,且已有环境的 conda list 可能报错。
- 例外情况:你刚重装系统、或明确打算弃用所有历史环境,才考虑重建
pkgs - 真要清,也得先备份关键环境:
conda env export -n myenv > myenv.yml - 更稳妥的做法是迁移:
mv ~/.conda/pkgs /big/disk/conda-pkgs && ln -s /big/disk/conda-pkgs ~/.conda/pkgs
最容易被忽略的点是:conda clean 不处理 envs 目录本身。删环境后残留的 conda-meta 和空目录,得靠 conda env remove -n xxx 或手动 rm -rf ~/anaconda3/envs/xxx 清理。缓存和环境,得两手一起抓,不然永远差那几 GB。











