我运行这个命令来释放 anaconda 上的磁盘空间
$ conda clean -all
Run Code Online (Sandbox Code Playgroud)
但是,pkgsanaconda python 的文件夹中仍然有一些大文件。
手动删除文件pkgs夹中的所有文件是否安全?有破坏我的 anaconda 环境的风险吗?如果有,有哪些副作用?
我在 Windows 10 上使用 anaconda 2018。
Rob*_*ert 18
实际上,在某些情况下,可以选择pkgs删除子目录。正如Anaconda 社区支持在此处所述,“该pkgs目录只是一个缓存。您可以根据需要完全删除它。但是,在创建新环境时,将缓存中的任何包留在周围更有效。”
根据文档,您可以conda clean --packages用来删除未使用的包pkgs(这会将它们移动到pkgs/.trash然后您可以安全地删除它们)。虽然这不会检查使用符号链接安装到包缓存的包,但如果您不使用此类环境或在 Windows 下工作,则这不是主题。我想这就是为什么conda clean --packages包含在conda clean --all.
为了更积极地节省空间,您可以使用conda clean --force-pkgs-dirs删除所有可写包缓存(同样的警告,可能存在链接到这些目录的环境)。如果你不使用环境或在 Windows 下使用 Anaconda,你可能是安全的。就个人而言,我使用此选项没有问题。
在查看@Robert's answer 中指出的文档后,我必须承认我最初的回应过于危言耸听,并且在某些方面公然不正确。我对误导性的回应表示歉意。
尽管如此,我确实相信我提出的一些内容对该线程仍有一些价值,因此我决定保留答案并进行修改。特别是,我认为值得强调的是,删除pkgs目录实际上可能无法实现 OP 所希望的(以节省空间),并且删除包缓存会破坏 Conda 未来的冗余最小化策略,因为无法共享已安装的包。
相反,我的最终建议与 @Robert 的建议一致,即conda clean -p用于删除未使用的包,但保留缓存 ( pkgsdir),以便未来的环境仍然可以利用硬链接。最后要注意的一点是,某些工具(例如conda-pack)依赖于包缓存的完整性才能正常工作,因此删除pkgs将阻止它们的使用。
不,这绝对不安全,事实上,您真正释放磁盘空间的唯一方法是破坏您的基础环境。问题是所有环境都使用指向pkgs目录的硬链接,因此即使您删除位于pkgs目录中的链接,环境中的链接仍然存在,因此您不会删除磁盘上的任何物理文件。 你可能做的唯一真正的删除是只被base引用的东西,即唯一的副本是 in pkgs,因此有可能破坏base。
更正:该基地ENV仍链接的包到其他位置,所以删除
pkgs不会影响基地作为我原来的结论。
我强烈建议您查看有关估计 Conda 实际磁盘使用情况的另一篇文章。您可能高估了实际使用的空间量。对于 中的大多数文件pkgs,只有一个物理副本,因此无需进行任何额外的手动优化。