单独的 Anaconda 环境是否会安装相同的包两次,占用两倍的存储空间?

joh*_*mos 9 python environment anaconda

如果我有两个单独的 Anaconda 环境,并且在每个环境中安装两个相同的软件包,它们是否安装两次,并占用两倍的存储空间?

IE

conda create --name myenv1

conda create --name myenv2

conda activate myenv1

conda install matplotlib

deactivate

conda activate myenv2

conda install matplotlib
Run Code Online (Sandbox Code Playgroud)

Wil*_*ons 8

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

默认情况下,环境是在envs安装 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
Run Code Online (Sandbox Code Playgroud)

使用了 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
Run Code Online (Sandbox Code Playgroud)

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