如何释放(ana)conda占用的磁盘空间?

Posted

技术标签:

【中文标题】如何释放(ana)conda占用的磁盘空间?【英文标题】:How to free disk space taken up by (ana)conda? 【发布时间】:2018-07-20 06:23:23 【问题描述】:

我经常使用 conda 包管理器。到目前为止,我有很多环境和大量下载的软件包,占用了我的 SSD 上的大量空间。释放一些空间的明显方法是使用命令

conda env export > environment.yml

从https://conda.io/docs/user-guide/tasks/manage-environments.html#exporting-the-environment-file 导出我的旧的、非活动项目使用的包(d),然后删除这些环境。据我了解,这应该会释放anaconda2/envs/ 中的一些空间,但不会释放anaconda2/pkgs/ 中的空间。我如何摆脱这些包?另外,我怀疑可能还有相当多的包仍然存在,没有环境链接到这些包 - 会发生这种情况吗?

问题:

    一般而言:减少 conda 占用空间的最佳方法是什么? 如何删除没有环境不再使用的包?如何修剪我的包裹?我正在从 Ubuntu/Debian 寻找类似 @​​987654325@ 的东西。

【问题讨论】:

【参考方案1】:

您可以通过以下方式释放一些空间:

conda clean --all

clean 删除未使用的包和缓存。

Conda 已经在可能的情况下对包使用符号链接。所以,我想,这里没什么可改进的。

好的,谢谢,但我想知道“不是针对特定环境,而是总体而言”- 针对所有环境。

你可以用几行 Python 列出所有 env 中的所有包:

import os
import subprocess
for env in os.listdir('/Users/me/miniconda3/envs'):
    subprocess.call(['conda', 'list', '-n', env])

【讨论】:

我用conda clean --dry-run --all 试了一下。超过 3GB 将被删除 - 还不错。但是,它列出了我最近安装并积极使用的软件包。这让我很困惑:.tar.bz2 即将被删除是什么意思?那些只是下载而不是安装?或者它可能是旧的,我从来没有安装过版本(我忘记了)? .tar.bz2 只是为潜在的第二次安装缓存的下载。它们被称为 tarball。只要有使用,安装就会一直存在。 好的,谢谢,但我想知道“不是针对特定环境,而是一般情况下”——针对所有环境。 为我的答案添加解决方案。顺便说一句,如果它解决了您的问题,您可以接受答案。 ;) 是否对命令conda clean --all 进行了一些更改?这些天我再次尝试使用它,它可靠地清理了所有没有被任何包使用的包。【参考方案2】:

最后我解决了这个问题。最后是几天的工作:

    对于我所有的 Python 项目,我都使用 PyCharm,并通过它检查了哪个项目使用了哪个环境。对于所有环境,我使用conda env export > environment.yml 保存来自https://conda.io/projects/conda/en/latest/user-guide/tasks/manage-environments.html#exporting-the-environment-file 的环境设置 检查我的项目是否仍然适用于从 environment.yml 创建的新环境。 在https://docs.anaconda.com/anaconda/install/uninstall 中使用选项B 中的anaconda-clean 并将创建的备份放在一个保存位置。 将旧的anaconda2 目录重命名为anaconda2_backup。 安装一个新的 conda 环境 - 在我的例子中是 miniconda3。 从environment.ymls 构建当前项目所需的新环境,并检查这些环境是否有效。 删除旧的 anaconda 备份。

最后,我还使用https://blog.shadypixel.com/how-to-shrink-an-lvm-volume-safely/ 减少了我的逻辑卷,但这仅适用于使用 LVM 的 Linux 用户。

这样我可以释放 20 到 30 GB 的空间。

【讨论】:

我不太明白这里的意思。上面建议的conda clean --all 不适用于单个环境,它适用于所有环境。你能解释一下你在这里取得的成就是conda clean --all 没有取得的成就吗?并不是说它需要 30 秒而不是几天!它不会自动删除您不再需要的环境,但阅读您的问题是关于删除任何环境未使用的软件包,而不是关于您不再使用的环境。 @ARoebel: ***.com/questions/48706548/… 暗示当时clean --all 对我不起作用:当时清理的太少,而对于当前版本,它清理得更多。这就是为什么当时我接受我自己的答案作为解决方案,后来将其更改为 Mike Müller 的答案。另外,我遇​​到的问题是我有很多休眠项目的环境,我必须备份和删除这些配置。 (这是真正的问题,但我无法重现。)

以上是关于如何释放(ana)conda占用的磁盘空间?的主要内容,如果未能解决你的问题,请参考以下文章

虚拟机ubuntu怎么占用磁盘空间这么畸形

文件删除后 磁盘空间的容量没有释放出来 怎么回事

hYPER-V虚拟磁盘如何压缩

如何缩减VMware虚拟机的磁盘空间

如何缩减VMware虚拟机的磁盘空间

虚拟机删除以后,主机磁盘空间没有还原。