初学python的爱好者,都有一个共同的地方,就是安装环境总是安装不好,这个包安了卸,卸了装,总是装不好,不知道是什么原因。学习python的热情,大大降低,甚至都有不想学的念头。今天我们讲解conda、pip、mamba、anaconda、miniconda、miniforge相互之间比较和关系。
conda、pip、mamba、anaconda、miniconda、miniforge,都是与python的包管理有关的环境程序,搞清楚他们的关系非常重要。它可以让我们轻松建立我们的开发环境,轻松驾驭包的安装和管理。
Anaconda vs Miniconda vs Miniforge
他们的核心都是包含conda这一工具,来实现 python 环境(environment) 和 包(package) 管理的,(其实conda不仅仅可以用来管理python,很多语言R, Java, C都支持)。
- Anaconda 和 Miniconda 是一个公司的产品,商用是付费的,个人暂时免费;
- Miniforge是由社区主导,用GitHub托管,完全免费。
- Miniconda 和 Miniforge 是差不多的产物,mini代表着轻量化,
- Anaconda是完整版,就略显臃肿,里面包括spyder、Jupter Notebook、Ananconda navigator等程序环境。
Anaconda vs Miniconda
(老司机) Miniconda = Python + conda,安装最小的支持包,如openssl, ncurses...
(新司机) Anaconda = Python + conda + meta package ,如
Anaconda3-2022.05-Windows-x86_64,安装至少不低于400个常见的支持包,如curl, numpy, pandas...
也就是说,Anaconda = Miniconda + more packages。Anaconda 一般还包括一个图形界面spyder,主要是多了一些基本的包,常见的包,安装完后,一般就可以直接使用,很省事,不用再单独安装了,但也有一些可能一直用不到,占用了许多空间。Miniconda 可以按需求安装库,但也可以借助conda install anaconda手动实现anaconda一样的预安装包 pre-installed package。Anaconda是安装初期花费更多时间下载,Miniconda是后期花更多时间单独安装。主语用哪一个,就看个人爱好了。我都都在Anaconda环境下教学,如果有特殊的包环境,我就建立虚拟环境,占用空间,反正现在硬盘大小不是问题,也不是主要矛盾。
Miniconda vs Miniforge
- Miniforge 使用conda-forge 作为默认 channel
- Miniconda 使用anaconda.org 作为默认channel。
另外:Miniforge 比 Anaconda、Miniconda 更早支持了Apple M1芯片。2022年5月6日Anaconda官方宣布原生支持了Apple M1版本。在苹果官方的Tensorflow加速训练教程中也是推荐的Miniforge。
channel含义:conda channels (源) 是 packages 存储的位置,也即是你是从哪个来源下载这个包,对应到conda内部处理则是下载文件的链接。因为不同源会有相同名字的包,因此必须指定来源,同时安装conda的时候也会有一个默认的channel。目前主流的就是 conda-forge,齐全且更新快。如果有多个channel,他们会按顺序确定优先级,优先的源上找不到,就会到下一个优先级的源上去找。还可以设置channel的优先级是否strict,如果是strict的话,则只会在这一个源上查找。
Conda vs Pip
- conda包管理的来源是anaconda.org,而pip的来源是 PyPI (Python Package Index)。
- pip是专门针对python打包而成的,属于wheels or source distributions,需要compiler来安装;conda的包是二进制(conda packages are binaries),因此包含例如C语言写的库,同时也不需要compilers。
- pip的没有严格的依赖冲突检查,而conda是会有严格的依赖冲突检查。
通常我们安装一个python包,直接用pip install
言而总之,优先推荐的是用conda创建虚拟python环境,使用conda安装需要的包,尤其是需要一些其他运行环境模块的时候。如遇见在使用过程中包出现问题的时候,就卸载后,使用pip install进行在线安装,或者直接下载对应的whl包进行安装。如果遇见特殊编译的,可以根据开发者的说明使用conda进行安装。个人推荐优先conda install,不行再pip install
需要注意的是 pip 和 conda 安装包对象的名称可能是不一样的,这个要看官网的说明,例如conda --- pytorch,pip --- torch。
Conda vs Mamba
我在python编程实践:mamba加速神器,体验飞一般的感觉,已经做了解释,总结一下:
mamba是用于管理环境的 CLI 工具。相比于 conda,mamba 是用 c++重写了 conda 的部分功能,运行效率显著提高,可以进行并行的下载,使用 rpm 包管理工具中的 libsolv,可以更快的解决环境依赖问题。mamba 的使用也比较简单,首先使用 conda 安装 mamba,后面所有用到 conda 的地方,都可以使用 mamba 替换即可。
安装:conda install mamba -c conda-forge
mamba优点:
- 自带多线程下载下载repository data和packages;
- mamba使用?libsolv加速解决依赖关系?? (安装过程中Solving environment:转圈圈的时间);
- Mamba的核心部分是通过C++实现,以获得最大执行效率;
- 最重要的是??Mamba可与conda完美兼容,学习成本极小?? (将conda执行命令中的conda换做mamba即可)。
总而言之:mamba可完全替换conda,提高包的管理的效率,和包安装的成功率。
最后,如果您喜欢我的文章,可以点个“关注”,成为铁粉后能第一时间收到文章推送。