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

Erw*_*yer 23 python pip package-managers anaconda conda

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

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

kal*_*anz 29

conda clean --yes --all
Run Code Online (Sandbox Code Playgroud)

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

  • 这不会卸载软件包,它只会删除下载的软件包文件. (16认同)
  • @Lorenz 感谢您的澄清!然后我只是想知道为什么 `--packages` 找到的文件比 `--all` 更多... (3认同)
  • 你知道`conda clean --yes --packages`有什么区别吗?有趣的是,--packages 找到的数据是我的 --all 选项的两倍。 (2认同)
  • @Agile Bean conda clean --yes --all 和 conda clean --yes --packages 之间的区别在于,包只是提取的文件夹。所有其他文件(.tar.bz2、.conda,即:tarball)都不会被 --packages 清理。如果您只想清理 tarball,则需要 conda clean --yes --tarballs 参考文献:/sf/ask/3129587471/ (2认同)

que*_*o42 11

@AgileBean 我试着回答你的评论问题,为什么--packages给你的结果比--all. 这仍然与如何卸载的主要问题有关,希望如此。

和...之间的不同

    conda clean --yes --all
Run Code Online (Sandbox Code Playgroud)

    conda clean --yes --packages
Run Code Online (Sandbox Code Playgroud)

是包只是提取的文件夹。所有其他文件(.tar.bz2、.conda,即:tarball)都不会被 .tar.gz 清理--packages

如果你只想清理压缩包,你需要

    conda clean --yes --tarballs
Run Code Online (Sandbox Code Playgroud)

参考资料: Anaconda Python:删除 pkgs 中的 .tar.gz

以下是差异的示例。请注意 --all 在实际运行中包含 --packages ,但它不会在试运行中显示 --packages 结果(非常奇怪!,请参见以下屏幕截图,它只是停在DryRunExit: Dry run. Exiting.

conda clean --all --dry-run 与 conda clean --packages --dry-run

哪些差异可以解释您发现 with--packages多于 with --all

  1. 如前所述,我的第一个猜测是您只使用了dry-run 选项,--packages当您运行conda clean --all --dry-run. 因此,请参阅此真实运行conda clean --all

    康达干净 --all

  2. 这两个警告可能很有趣:

    WARNING: C:\Users\Admin\.conda\pkgs does not exist                                                                                                                                           
    WARNING: C:\Users\Admin\AppData\Local\conda\conda\pkgs does not exist
    
    Run Code Online (Sandbox Code Playgroud)

    但是如果你没有试运行,而是真正运行--all,你会得到相同的结果,因为--all包括--packages,因此也包括它的警告。当您使用试运行时,这也是看不到的。

  3. 一个很好的理由可能是您曾经使用过清理过您的包,--tarballs或者您只是手动删除了一些 tarball,以便您解压缩的包数量超过 .zip 文件中的 tarball 数量--dry-run

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

  5. 也许您在文档中发现了另一件事? https://docs.conda.io/projects/conda/en/latest/commands/clean.html。它说的是符号链接:“警告:这不会检查使用符号链接安装到包缓存的包。” 作为--packages的一部分--all,这仍然无法解释您的差异。

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


小智 6

就其价值而言,我注意到以下内容......

  • 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无法为您提供将/可以删除的内容的完整信息