ChatGPT解决这个技术问题 Extra ChatGPT

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

我正在使用 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 搜索类似 sudo apt-get autoremove 的东西。


M
Mike Müller

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

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 进行了一些更改?这些天我再次尝试使用它,它可靠地清理了所有没有被任何包使用的包。
M
Make42

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

对于我所有的 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:stackoverflow.com/questions/48706548/… 暗示当时 clean --all 对我不起作用:当时清理的太少,而对于当前版本,它清理的更多。这就是为什么当时我接受我自己的答案作为解决方案,后来将其更改为 Mike Müller 的答案。另外,我遇到的问题是我有很多休眠项目的环境,我必须备份和删除这些配置。 (Mybe 那是真正的问题,但我无法重现。)