我有一个conda虚拟环境,里面安装了一些未使用的包(可能是用pip install
或conda install
安装的)。
最简单的方法是什么,可以清理掉未被我的代码实际使用的包,只保留用到的包?
我有一个conda虚拟环境,里面安装了一些未使用的包(可能是用pip install
或conda install
安装的)。
最简单的方法是什么,可以清理掉未被我的代码实际使用的包,只保留用到的包?
conda clean --yes --all
会对所有内容进行清理。但请注意:如果您想进行任何类型的--offline
操作,请不要使用--all
;应更加有选择性。
conda clean --yes --packages
和 conda clean --all
有什么区别吗?有趣的是,对我来说,--packages 选项找到的数据是 --all 的两倍。 - Agile Bean--packages
找到的文件比 --all
还要多... - Agile Beanconda clean --all
,现在在一些软件包的--offline
安装中遇到了问题/损坏,尽管进行了全新安装。请您解释一下:a) 为什么--all
对于--offline
是有问题的,b) 如何修复这个情况? - mara004@AgileBean,我尝试回答你在评论中关于为什么--packages
比--all
给出更多结果的问题。这仍然与主要问题如何卸载相关,希望能有所帮助。
区别在于:
conda clean --yes --all
以及
conda clean --yes --packages
这意味着包仅是提取的文件夹。所有其他文件(.tar.bz2, .conda,即tarballs)都不会被--packages
清理。
如果要仅清理tarballs,则需要:
conda clean --yes --tarballs
参考文献: Anaconda Python: Delete .tar.gz in pkgs
这是差异的一个示例。请注意,在实际运行中,--all包括--packages,但在dry-run中不显示--packages结果(非常奇怪!参见以下截图,它只停留在)
有哪些差异可以解释为什么您使用--packages
比--all
找到更多内容?
正如之前所说,我第一次猜测你只使用了dry-run选项,这将不会在运行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
中,未解压的软件包数量超过了tarballs的数量。
你可能已经手动解压了许多软件包到缓存文件夹中,例如从git进行的手动安装以及所有其他不提供conda / pip安装的安装,然后在--dry-run
中,--all
不会显示--packages
。
可能你能在文档中找到另一个答案?https://docs.conda.io/projects/conda/en/latest/commands/clean.html。它关于符号链接说:“WARNING: This does not check for packages installed using symlinks back to the package cache.”因为--packages
是--all
的一部分,所以这仍然不能解释你的差异。
我猜你--packages
> --all
的问题是因为conda clean --all --dry-run
不会显示--packages
的结果,尽管它也会清理它们,所以你实际上并没有这个问题 ;)。
conda clean --all --dry-run
显示总共约为 2GB 的数据conda clean --packages --dry-run
显示总共约为 6GB 的数据conda clean --tarballs --dry-run
命令时,它也显示了 2GB,很奇怪...比较第一个和最后一个命令的输出,似乎 conda clean --all --dry-run
只显示了 tarballs,没有提到 packages。conda clean --tarballs
然后重新运行了 conda clean --all --dry-run
...你猜怎么着?现在它显示了 packages(在提到没有 tarballs 后,这是合理的,因为我刚刚清理了它们)conda clean --all --dry-run
不会给出完整的将要/可能被删除的信息。
conda clean --packages
。特别是,您可以先使用“干运行”设置尝试它--也就是conda clean --packages --dry-run
。我认为它仅寻找未在任何conda环境中使用的软件包。因此,它不会检查您是否在代码本身中使用它,但它可能很有用。 - Paul