Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何释放(ana)conda占用的磁盘空间?_Python_Anaconda_Conda - Fatal编程技术网

Python 如何释放(ana)conda占用的磁盘空间?

Python 如何释放(ana)conda占用的磁盘空间?,python,anaconda,conda,Python,Anaconda,Conda,我正在使用康达软件包管理器-很多。到目前为止,我有相当多的环境和大量下载的软件包,占用了我SSD上的大量空间。释放部分空间的一个明显途径是使用命令 conda env export > environment.yml 从导出旧的非活动项目使用的包(d),然后删除这些环境。据我所知,这应该会在anaconda2/envs/中释放一些空间,但在anaconda2/pkgs/中不会。我该如何处理这些包裹?另外,我怀疑可能有相当多的包仍然存在,没有环境链接到这些包——这会发生吗 问题: 一般来说

我正在使用康达软件包管理器-很多。到目前为止,我有相当多的环境和大量下载的软件包,占用了我SSD上的大量空间。释放部分空间的一个明显途径是使用命令

conda env export > environment.yml
从导出旧的非活动项目使用的包(d),然后删除这些环境。据我所知,这应该会在
anaconda2/envs/
中释放一些空间,但在
anaconda2/pkgs/
中不会。我该如何处理这些包裹?另外,我怀疑可能有相当多的包仍然存在,没有环境链接到这些包——这会发生吗

问题:

  • 一般来说:减少conda占用空间的最佳方法是什么
  • 我如何摆脱不再有环境使用的包?我如何修剪我的包裹?我正在从Ubuntu/Debian搜索类似于sudo apt get autoremove的东西

  • 您可以通过以下方式释放一些空间:

    conda clean --all
    
    clean
    删除未使用的包和缓存

    康达已在可能的情况下为软件包使用符号链接。所以,我想在这方面没有多少改进


    好的,谢谢,但我想知道“不是针对特定环境,而是针对一般环境”——针对所有环境

    您可以使用几行Python列出所有环境中的所有包:

    import os
    import subprocess
    for env in os.listdir('/Users/me/miniconda3/envs'):
        subprocess.call(['conda', 'list', '-n', env])
    

    最后,我开始着手处理这个问题。最后是几天的工作:

  • 对于我所有的Python项目,我都使用PyCharm,并用它检查哪个项目使用哪个环境。对于所有环境,我使用
    conda env export>environment.yml
  • 检查我的项目是否仍与从environment.yml创建的新环境一起工作
  • 使用中选项B中的
    anaconda clean
    ,并将创建的备份放在保存位置
  • 将旧的
    anaconda2
    目录重命名为
    anaconda2\u备份
  • 在我的情况下,安装一个新的conda环境-
    miniconda3
  • environment.yml
    s构建当前项目所需的新环境,并检查这些环境是否工作
  • 删除旧的anaconda备份
  • 最后,我还使用减少了逻辑卷,但这仅适用于使用LVMs的Linux用户


    这样我就可以释放20到30 GB的空间。

    我用
    conda clean--dry run--all
    进行了尝试。超过3GB的数据将被删除-还不错。但是,它列出了我最近安装并积极使用的软件包。这让我困惑:当
    .tar.bz2
    即将被删除时,这意味着什么?这些只是下载而不是安装吗?或者可能是一些旧的东西,我从来没有安装过一个版本(而且我忘了)?
    .tar.bz2
    只是一个下载,它被缓存起来,以备可能的第二次安装。它们被称为柏油球。只要有人在使用,安装就会一直保留。好的,谢谢,但我想知道“不是针对特定环境,而是针对一般环境”-适用于所有环境。请在我的答案中添加一个解决方案。顺便说一句,如果答案能解决你的问题,你可以接受是否对命令conda clean--all做了一些更改?这些天我再次尝试使用它,它可靠地清理了所有没有被任何软件包使用的软件包。我不太理解这里的要点。上面建议的
    conda clean--all
    不适用于单个环境,它适用于所有环境。你能解释一下你在这里实现了什么,而不是通过
    conda clean--all
    实现的吗。并不是说它需要30秒而不是几天!它不会自动删除您不再需要的环境,但阅读您的问题时,它是关于删除未被任何环境使用的包,而不是关于您不再使用的环境。@ARoebel:提示当时的
    clean--all
    对我不起作用:当时清理的太少,而对于当前版本,它清理的更多。这就是为什么当时,我接受我自己的答案作为解决方案,后来改为迈克·穆勒的答案。此外,我还有一个问题,就是我有很多休眠项目的环境,我必须对这些环境进行备份和删除。(也许这才是真正的问题,但我无法重现。)