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

标签 python anaconda environment

如果我有两个独立的 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/

相关文章:

python - python中的浅拷贝

python - 使用 Python 3 为 GNU Chess 编写 API/包装器

python - 在 Jupyter iPython 中运行 Cython

shell - 激活 conda 失败(采购 ~/.bashrc)

python - 已删除的 conda 环境仍然出现在 jupyter-lab 中。我怎样才能删除它们?

python - 如何在以下场景中使用 python 元类?

python - flask 安全 : Customize Email Templates

python - 你怎么知道从哪个 conda channel 安装?

php - mysqli_fetch_assoc()需要参数/调用成员函数bind_param()错误。如何获取并修复实际的mysql错误?

r - R中不同的封闭环境、函数环境等