如果我有两个独立的 Anaconda 环境,并且在每个环境中安装两个相同的包,它们会安装两次并占用两倍的存储空间吗?
即
conda create --name myenv1
conda create --name myenv2
conda activate myenv1
conda install matplotlib
deactivate
conda activate myenv2
conda install matplotlib
最佳答案
这是我对自己的疑问。不,它不会占用两倍的存储空间。我在新的 ubuntu 18.04 容器中使用 conda 版本 4.7.10,但您可以尝试使用您的 conda 版本并验证结果。
默认情况下,环境是在您安装 anaconda 的目录下的 envs
文件夹中创建的。对我来说是 $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 目录,我在任何地方都看不到任何符号链接(symbolic link)。于是查看了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”是与文件关联的硬链接(hard link)数。通常一个文件只有一个。每个环境都必须创建另一个指向同一文件的硬链接(hard link)。
关于python - 单独的 Anaconda 环境是否会安装相同的包两次,占用两倍的存储空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57717410/