1.conda和pip
两者都是管理python依赖包的包管理器,pip是python官方提供的。
conda(2012年)pip(2008年)。
两者的区别
因为python的语法相对简单,所以在科学和数学方面是主流语言。但是其性能不出众(比如计算速度慢等等),于是出现了用其他语言(C语言或者Fortran)写的数学库,通过封装实现python跨语言调用。由此既保证了简单的语法,还保证了计算速度。
pip在这种跨语言的依赖的支持方面(兼容性)做的十分糟糕,通常需要系统已经安装了这些依赖,或者通过wheel格式(预编译的二进制包)来提供。于是有了conda。
C语言是跨平台相关的,不同的操作系统对应不同的二进制版本。conda的软件仓库会为每一个支持的系统提前处理好编译的二进制版本等等,所以使用conda更方便。
2.Anaconda体系:
Anaconda:
常说的Anaconda实际是这家公司的发行版,完整名称为Anaconda Distribution。不仅包含了conda这个核心组件,还附带了常见(科学领域最流行)的软件包,对新手友好。
Miniconda:
只有最核心的conda和python,适合喜欢更精简或者自定义需求的使用者。
Anaconda.ORG:
一个软件库平台,官方的软件库也在这里面,在该平台上仓库被称为channel,官方的是defaults channel。因为维护和兼容性问题太多,工作量大,官方能力有限。 而这个平台实现了用户可以自己上传包,自己维护,自己负责兼容性问题,所以有一个开源社区在该平台上创建了conda-forge的channel,该channel兼容性和稳定性近年来大幅度提升,软件包数量多且更新快。
Miniforge:
conda默认的channel是defaults channel,现在该channel有商业收费问题。开源社区的人员通过修改默认channel创建了Miniforge,其默认channel为conda-forge。
Mamba:
加强版的conda。现代项目的依赖越来越复杂,通过C++对conda最慢的部分(比如依赖求解器)进行优化,并添加了多线程下载功能,由此诞生了Mamba。现在默认包含在Miniforge安装包里面。Mamba不仅是速度优化,还改进了依赖解析算法。它完全兼容conda的命令语法,可以直接替换使用,比如:
conda install numpy → mamba install numpy
conda update --all-> mamba update --all