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)
这是我曾经想过关于自己的一个问题。不,它不会占用两倍的存储空间。我在新的 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”是与文件关联的硬链接数。通常一个文件只有一个。每个环境都必须创建另一个指向同一文件的硬链接。