我注意到,通常使用各种包管理器(对于python)安装包时,它们会安装在conda上的/home/user/anaconda3/envs/env_name/
和/home/user/anaconda3/envs/env_name/lib/python3中。6/lib包/
在conda上使用pip。
但是康达也会缓存所有最近下载的软件包。
所以,我的问题是:为什么conda不在一个中心位置安装所有的包,然后当安装在一个特定的环境中时,创建一个到目录的链接,而不是在那里安装它?
我注意到环境变得相当大,这种方法可能能够节省一点空间。
康达已经这样做了。但是,由于它利用了硬链接,因此很容易高估实际使用的空间,特别是如果一次只查看单个环境的大小。
为了说明这个案例,让我们使用du
来检查真正的磁盘使用情况。首先,如果我单独计算每个环境目录,我会得到每个环境的未更正使用情况
$ for d in envs/*; do du -sh $d; done
2.4G envs/pymc36
1.7G envs/pymc3_27
1.4G envs/r-keras
1.7G envs/stan
1.2G envs/velocyto
这就是它在GUI中的外观。
相反,如果我让du
一起计算它们(即,纠正硬链接),我们会得到
$ du -sh envs/*
2.4G envs/pymc36
326M envs/pymc3_27
820M envs/r-keras
927M envs/stan
548M envs/velocyto
人们可以看到,这里已经节省了大量的空间。
大多数硬链接都返回到pkgs
目录,因此如果我们也包括该目录:
$ du -sh pkgs envs/*
8.2G pkgs
400M envs/pymc36
116M envs/pymc3_27
92M envs/r-keras
62M envs/stan
162M envs/velocyto
可以看到,在共享包之外,环境相当轻。如果您关心我的pkgs
的大小,请注意,我从未在这个系统上运行过conda clean
,因此我的pkgs
目录中充满了tarball和被取代的包,以及我保留在base中的一些基础设施(例如,Jupyter、Git等)。