conda文档指定:
conda clean [-h] [-y] [--dry-run] [--json] [--debug] [--verbose] [-q] [-a] [-i] [-l] [- t] [-p] [-s]
删除未使用的程序包和缓存。
例:
Run Code Online (Sandbox Code Playgroud)conda clean --tarballs
因此,删除未使用的软件包是可以的。
Dev*_*yan 25
pkgs/无论您碰巧安装了 conda,它都会从目录下删除未使用的软件包。“未使用”的包是指未在任何环境中使用的包。所有 conda 包都存储在该pkgs/目录下,然后(如果可能)硬链接到环境中。
顺便说一句,conda clean将打印出包实际所在的位置:
$ conda clean -all
Cache location: /data/processing/ryan/miniconda/pkgs
Will remove the following tarballs:
/data/processing/ryan/miniconda/pkgs
------------------------------------
filelock-3.0.10-py_0.tar.bz2 9 KB
Run Code Online (Sandbox Code Playgroud)
编辑 13.3.2020 rvf指出该-all选项已更改为conda 4.8.2 中的-a或--all。
这是一个非常重要的问题,值得更多讨论。
conda clean --all
Run Code Online (Sandbox Code Playgroud)
将删除未使用的包和缓存。
它将从所有环境中删除所有未使用的包,而不仅仅是当前激活的包。
这可能会释放数十 GB 的空间。我有大约 25 个 conda 环境用于不同的数据科学开发和培训项目。带有我所有 conda 环境的 Anaconda 安装膨胀到超过 60GB 的空间。
Remove在Anaconda Navigator 中执行操作实际上并没有释放磁盘空间。
使用conda clean --all已删除的未使用包、临时文件、轮子、exe 文件和其他不再使用的二进制文件。
需要重新启动 Windows 才能真正删除未使用的软件包。
小智 5
这一页和这一页“conda clean”会删除我最喜欢的软件包吗?在运行此命令之前对要提出的合理问题给出有用的答案,这很好。
我了解了硬/软链接,我们中的一个人声称他实际上敢于清理他的……东西,这是一个最珍贵的信息。昨天我不敢按按钮。
我想扩展以下问题:为什么要删除软件包,尽管它们可能看起来是必需的(如果您不查看周围的版本!),“它如何知道它们是未使用的软件包?”
好吧,这就是为什么每个人都使用 conda :因为它是基于 DAG 的!
如果您还没有参加这门课程,请快速了解一下:
DAG 是有向无环图,意思是 conda 中的模块/包图。有向意味着包 A --- 依赖于 ----> B (这里只针对一个方向,这是有道理的,非循环意味着我们确保我们永远不会出现像 A->B、B->C、C 这样的循环->A)。好吧,很明显,在这里思考“依赖于”的含义是行不通的,至少在系统中,而不是在任何地方(如果你用这种方式编写 3 个方法调用另一个方法,那么在你的 IDE 中是一样的:你会得到一个错误来自 Java 编译器,但这种检查很便宜,因为您只有“一些”方法)。
为了管理保持 conda 上的依赖关系正常这一艰巨的任务,这个“计算”图始终被维护,因此该工具花费了一生的时间来研究它,利用了当今统治世界的极其出色的图算法。
当您推送 clean cmd 时,您会触发一个算法,该算法将以有效的方式遍历整个图(该图也必须具有您的环境,指向请求的模块 ENV---requires--PACK),并保留每个节点的计数,至少访问过一次(直接从根访问)或多次。最后,带有“1”的人被删除。
许多应用程序也使用同样的方法:例如,Java 中的 GC 垃圾收集器是一个直观的类似问题:在我们看来,所有变量都是有用的,但实际上不再是那些没有更多上下文与之相关的变量(基本上在例如方法的完成:返回的值将继续存在,但是在方法中创建的帮助辅助值呢?)。GB 无法在方法返回后立即处理它们..为什么?因为它的计算效率太低了。首选计划任务,在特定时间或容量限制下运行以进行清理。
那么对于 conda 来说,听到这些“链接”并了解内部的 DAG 技术,现在应该更清楚其中的相似之处了。
因此,conda 删除的是DAG 中的一个模块/包,它本身是单独存在的(仍然可以看到,但当然只能通过图的根来查看,因为它曾经在那里并且需要有一天进行清理) , 明显地)。
这意味着这个包有一天被下载使用,但另一个发生了变化(这个依赖管理任务的升级或降级),并且该包的另一个版本在那里登陆,也许所有地方的包最终都使用新版本同样,直到有一天,很快就消失的版本被留下了根,独自一人。
但是 conda 就像 JVM 中的 GC 一样,不想在发生这种情况时处理它:否则,这将是您机器上图算法的另一次完整检查运行,每次只有一个依赖项发生变化......
因此,conda 团队让我们的用户在两个工作日或两家公司之间或当您的驱动器已满时运行此任务。可能更有意义,现在你知道你自己(就像我一样)就像循环中的GC ;)
而且,试运行选项可以让您在不执行的情况下尝试它,从而使人们对这种信念的飞跃更有信心,如文档中所示:
与有向图相关的概念(其中检查循环始终是算法正常工作的待办事项。
https://github.com/kevin-wayne/algs4
学分:普林斯顿鲍勃塞奇威克来自普林斯顿的完美视频课程,
| 归档时间: |
|
| 查看次数: |
2743 次 |
| 最近记录: |