不同的Anaconda环境会安装相同的软件包,占用两倍的存储空间吗?

9
如果我有两个独立的Anaconda环境,并在每个环境中安装了两个相同的软件包,它们会重复安装并占用两倍的存储空间吗?
例如:
conda create --name myenv1

conda create --name myenv2

conda activate myenv1

conda install matplotlib

deactivate

conda activate myenv2

conda install matplotlib

1个回答

11

这是我自己曾经想过的问题。不会占用两倍的存储空间。我正在使用conda版本4.7.10在一个新的ubuntu 18.04容器中,但您可以尝试使用您的conda版本并验证结果。

默认情况下,在您安装anaconda的目录下创建环境文件夹。对于我来说,那是$HOME/anaconda3。每次安装后,您需要运行du -sh $HOME/anaconda3/envs以查看磁盘空间使用情况的摘要,以人类可读的格式显示。

$ du -sh $HOME/anaconda3/envs
4.0K    /root/anaconda3/envs

$ conda create --name myenv1 -y
$ conda create --name myenv2 -y
$ conda install matplotlib -n myenv1 -y

$ du -sh $HOME/anaconda3/envs
338M    /root/anaconda3/envs


$ conda install matplotlib -n myenv2 -y

$ du -sh $HOME/anaconda3/envs
357M    /root/anaconda3/envs

增加了19M的使用空间,但并没有翻倍。

现在的问题是他们如何避免使空间翻倍,我查看了envs目录,但是没有看到任何符号链接。于是我查看了myenv2下的一些文件:

$ ls -lh /root/anaconda3/envs/myenv2/lib/python3.7/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSans-Bold.ttf
-rw-rw-r--. 3 root root 688K Jul  1 06:19 /root/anaconda3/envs/myenv2/lib/python3.7/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSans-Bold.ttf

权限之后,在文件和组所有者之前的数字“3”是与文件相关联的硬链接数。通常,一个文件只有一个硬链接。每个环境必须为同一文件创建另一个硬链接。


1
哇,使用硬链接比符号链接真的是更好的选择。 - Sraw
很棒的信息。如果我们有不同版本的相同软件包,那么是否需要分别安装?我认为是这样的...即使在同一环境中,如果您安装了2个版本的软件包,那么存储空间将增加一倍(假设软件包大小相同)。 - john stamos

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接