删除 Conda 环境不会释放磁盘空间

Ale*_*lex 6 conda

我在 Conda 环境中安装了一堆软件包,包括带有 NVIDIA 工具包的 docker 容器和一些其他非 python 库。安装大约占用 10 GB 磁盘空间。但是当我删除Conda环境时,磁盘空间没有返回(没有释放)。删除环境是否应该导致删除在该环境中创建的所有文件?

环境中安装的一些东西是通过使用 pip、apt-get install、apt-add 存储库等安装的。

在 Conda 环境中安装软件包时,命令行以 (my_environment) 为前缀。

Conda 环境是使用以下命令在 Ubuntu 18.04 上创建的: conda create -n my_environment

环境已通过以下方式激活: conda activate my_environment

环境已通过以下方式删除: conda remove --name my_environment --all

到底是怎么回事?

mer*_*erv 5

Conda 包缓存

Conda 的工作原理是首先将包下载到包缓存(选中conda config --show pkgs_dirs),然后通过从包缓存中复制或硬链接到文件/文件夹来将包“安装”到特定环境。此过程有助于最大限度地减少多个环境中的包冗余。也就是说,当环境使用相同的包版本(版本)时,它允许环境共享包的单个物理副本。

考虑到这一点,答案是否定的,您正在经历预期的行为。删除环境通常只是删除硬链接,但不会删除包缓存中的文件。为了实现后者,需要另外使用

# read warning below before running this
conda clean --tarballs --packages
Run Code Online (Sandbox Code Playgroud)

这将清除任何临时 tarball 和任何未硬链接到任何环境的软件包。

警告:请注意标志说明

 -p, --packages        Remove unused packages from writable package caches.
                       WARNING: This does not check for packages installed
                       using symlinks back to the package cache.
Run Code Online (Sandbox Code Playgroud)

该警告不适用于大多数用户(例如,默认配置为allow_softlinks: False),但有些用户可能会使用符号链接(软链接)来最大限度地减少设置中的冗余,其中包缓存位于与创建环境的物理磁盘不同的物理磁盘上。