问题描述及原因分析
我的电脑C盘空间爆红了,在进行磁盘检查的时候发现了一些文件C:\Users\Admin\AppData\Local\conda\conda\pkgs.trash。
此文件夹为Conda 内部软件包回收站。卸载包、更新替换旧版本包时,Conda 不会立刻物理删除文件,而是把旧包整体移动到这个 .trash 垃圾桶目录暂存;属于纯垃圾备份缓存,不会被任何正在运行的 Python 环境调用;conda clean 默认不会自动清空这个.trash 文件夹,日积月累,占用我的C盘4个 GB 。
可以 放心整个删除,对 Python、Conda已装环境无影响。
解决方案:
针对上述问题,做一下记录
方法1:执行命令
打开 Anaconda Prompt,执行如下命令
bash
#这条命令专门清空 pkgs 下的.trash 回收站目录。
conda clean --trash -y
顺带把所有冗余包缓存一起清理,删除无用旧包压缩包、孤立解压包、索引缓存,只保留当前环境正在依赖的包,可以大幅释放 C 盘:
bash
conda clean --all -y
方法2:手动删除
如果无法使用命令删除,那就得手动了。请先关闭占用的进程,Anaconda,Jupyter、 python.exe、conda.exe等可能占用的程序文件再删除;若果在删除的时候始终提示文件被占用,可重启电脑,然后再手动删除 .trash 文件夹。
【注意】只删 .trash,不要直接删除上级 pkgs 整个文件夹,pkgs 里是正在被环境硬链接调用的包,删了会导致 Python 库报错无法导入。
方法3:修改文件的存储路径
该方案可以从根本上为C 盘减负,迁移 pkgs 包缓存到 其他盘,彻底不再占用 C 盘,以我的为例迁移到W盘。
bash
# 以为的设置包缓存目录到W盘
conda config --add pkgs_dirs "W:\data\CondaCache\conda_pkgs"
# 设置虚拟环境存放目录到W盘
conda config --add envs_dirs "W:\data\CondaCache\conda_envs"
# 查看是否配置成功
conda config --show
conda config --show pkgs_dirs
conda config --show envs_dirs
#查看所有环境
conda env list
#删除无用虚拟环境
conda remove -n 环境名 --all -y
如果在配置的过程中命令执行报错,那就只能手动处理了,方法如下。
- 1.关闭所有 Anaconda Prompt、VSCode、Python 终端,备份配置文件
C:\Users\Admin\.condarc,打开文件,用记事本打开 .condarc,修改里面所有 pkgs_dirs、envs_dirs 整段内容,保存- 2.已存在旧包手动迁移,彻底释放 C 盘空间
在 W 盘手动建好两个文件夹:W:\data\CondaCache\conda_envs、W:\data\CondaCache\conda_envs
复制 C 盘旧 pkgs 所有文件:
C:\Users\Admin\AppData\Local\conda\conda\pkgs里面除了 .trash 全部复制到W:\data\CondaCache\conda_pkgs
复制完成后,删除 C 盘整个 conda 缓存文件夹即可。
配置完成后,进行测试
bash
conda install 包名