如何在 conda 虚拟环境中卸载所有未使用的软件包?

Posted

技术标签:

【中文标题】如何在 conda 虚拟环境中卸载所有未使用的软件包?【英文标题】:How to uninstall all unused packages in a conda virtual environment? 【发布时间】:2016-07-18 10:31:56 【问题描述】:

我有一个 conda 虚拟环境,其中安装了几个未使用的软件包(使用 pip installconda install)。

清理它的最简单方法是什么,以便只保留我的代码实际使用的包,而卸载其他包?

【问题讨论】:

您可能想看看conda clean --packages。特别是,您可以先使用“dry-run”设置进行尝试——即conda clean --packages --dry-run。我认为它只是在寻找未在任何 conda 环境中使用的包。因此它不会检查您是否在代码本身中使用它,但它可能很有用。 【参考方案1】:
conda clean --yes --all

将消毒一切。但请注意:如果您想做任何类型的--offline 操作,请不要使用--all;更有选择性。

【讨论】:

这不会卸载包,它只会删除下载的包文件。 你知道conda clean --yes --packages有什么区别吗?有趣的是,对我来说,--packages 找到的数据量是 --all 选项的两倍。 @Agile Bean conda clean --yes --all 和 conda clean --yes --packages 之间的区别在于,包只是提取的文件夹。所有其他文件(.tar.bz2、.conda,即:tarballs)都不会被 --packages 清理。如果您只想清理 tarball,则需要 conda clean --yes --tarballs 参考:***.com/questions/44708392/… @Lorenz 感谢您的澄清!那我只是想知道为什么--packages 发现的文件比--all 多... @AgileBean 我添加了一个单独的答案。【参考方案2】:

@AgileBean 我尝试回答您关于为什么--packages--all 为您提供更多结果的评论问题。希望这仍然与如何卸载的主要问题有关。

两者的区别

    conda clean --yes --all

    conda clean --yes --packages

是包只是提取的文件夹。 --packages 没有清理所有其他文件(.tar.bz2、.conda,即:tarballs)。

如果您只想清理 tarball,则需要

    conda clean --yes --tarballs

参考资料: Anaconda Python: Delete .tar.gz in pkgs

以下是差异的示例。注意 --all 在实际运行中包含 --packages,但它不会显示 --packages 导致空运行(很奇怪!请看下面的屏幕截图,它只是停在DryRunExit: Dry run. Exiting.

存在哪些差异可以解释您使用--packages 找到的内容比使用--all 更多?

    如前所述,我的第一个猜测是您只使用了空运行选项,当您运行 conda clean --all --dry-run 时,它不会显示已清理的 --packages。因此从conda clean --all 看到这个真实的运行:

    这两个警告可能很有趣:

    WARNING: C:\Users\Admin\.conda\pkgs does not exist                                                                                                                                           
    WARNING: C:\Users\Admin\AppData\Local\conda\conda\pkgs does not exist
    

    但如果你不试运行,而是真正运行--all,你会得到 同样,因为--all 包括--packages,因此它 警告也是如此。再次,当您使用空运行时,看不到这一点。

    一个很好的理由可能是你曾经清理过你的包裹 使用 --tarballs 或者您只是删除了一些 tarball 手动使您的解压缩包数量超过 --dry-run 中的 tarball。

    您可能已经手动将大量包解压缩到缓存中 文件夹,例如来自 git 和所有其他的手动安装 不提供 conda / pip install 的安装,然后在 --dry-run 中,--all 退出而不显示 --packages

    也许您在文档中发现了另一件事? https://docs.conda.io/projects/conda/en/latest/commands/clean.html。 它说关于符号链接:“警告:这不会检查使用符号链接安装的软件包返回到软件包缓存。”由于--packages--all 的一部分,这仍然没有解释您的区别。

我猜你的--packages > --all 问题的原因是conda clean --all --dry-run 没有显示--packages 的结果,尽管它也清理了它们,所以你实际上没有这个问题;)。

【讨论】:

【参考方案3】:

对于它的价值,我注意到以下...

conda clean --all --dry-run给了我大概2GB conda clean --packages --dry-run给了我大概6GB

与 OP 观察到的差异相同...

当我接下来做 conda clean --tarballs --dry-run 时,我注意到它也给了我 2GB,奇怪...比较第一个和最后一个命令的输出,似乎 conda clean --all --dry-run 只向我显示了 tarball,没有提及包

我继续,conda clean --tarballs 然后重新运行conda clean --all --dry-run...你猜怎么着?它现在显示了包(在提到没有 tarball 之后,这是合乎逻辑的,因为我刚刚清理了它们)

我的结论...当缓存中仍有 tarball 时,conda clean --all --dry-run 不会为您提供将/可以删除的全部内容

【讨论】:

以上是关于如何在 conda 虚拟环境中卸载所有未使用的软件包?的主要内容,如果未能解决你的问题,请参考以下文章

python 虚拟环境 conda 命令

python 虚拟环境 conda 命令

python 虚拟环境 conda 命令

python 虚拟环境 conda 命令

Anaconda下使用Pip或者conda安装库指南

conda常用命令之–虚拟环境管理(教你如何创建激活重命名删除虚拟环境)