提问者:小点点

包能否在Anaconda环境中共享?


我的~/anaconda目录占用了太多的磁盘空间(10GB),尽管我只有五个环境,并且运行了conda清除。我发现,当我尝试创建一个新的conda环境时,Anaconda会显示一个很长的要下载的包列表,其中似乎包括一个完整的科学Python堆栈(Python解释器、Numpy、sency等)。)。似乎Anaconda正在为每个环境独立安装所有内容。这是真的吗?

以下列表包含一些可能解决空间问题的纯推测性方法:

  • 我可以创建一个“子环境”来“继承”一个“父环境”的包吗
  • 能否让Anaconda共享(例如,通过文件系统上的符号链接)不同环境中使用的相同软件包
  • 默认环境在包管理方面是否有任何特殊状态?我使用Anaconda2,但我的大多数环境都使用Python 3。切换到Anaconda 3可以节省空间吗?(这将默认环境视为所有其他环境的“父环境”。)
  • 我通常使用pip安装软件包,因为conda安装经常失败。conda install是否做了一些聪明的工作来重用已经在其他地方安装的软件包

(调试信息)~/anaconda/envs下我的四个环境目录的大小介于1.2GB和2.6GB之间。这正常吗?


共2个答案

匿名用户

我相信你的主要问题的答案在于巨蟒和小型蟒蛇之间的区别。Anaconda包含一长串软件包,这些软件包会自动安装到您创建的每个环境中。Miniconda创建裸骨conda虚拟环境(其中根本不包含许多包)。切换到Miniconda将大大减少环境中的软件包大小/数量。巨蟒的容量约为2GB,而小型巨蟒的容量接近100MB。

Conda还对已安装的包使用硬链接vsconda安装。硬链接的一个很好的描述可以在这里找到。它们基本上链接了跨多个环境的依赖关系,如上所述。通过pip安装的包不是硬链接的,所以它们不能利用conda包提供的节省空间。

匿名用户

要创建“继承”包的环境:
您可以导出/导入与yaml文件一起使用的包的名称
或使用--clone标志<看看这个答案。