Conda(Anaconda)
未完待续
概述
Python使用pip和venv来管理包和隔离项目环境,pip和venv早在2011年和2008年就推出了,Python很多的数学计算库都采用了python调用C/Fortran的形式,既保留了语法,又保留了计算速度,但是早期pip对这种跨语言的依赖支持不好,科学计算开发者基本都是搞数学的,要自己编译适配C/Fortran依赖,非常不便。
于是就有了Conda,它也是一款Python的包管理器,诞生于2012年,分为Anaconda和Miniconda,由Continuum Analytics推出,其本身也是由Python为主要语言开发的,也能用于其它语言的包管理,早期的Continuum Analytics公司将python和C/Fortran跨语言开发的常见数学库打包在一起,很快在科学计算领域被大量使用,这就是Anaconda Distribution,后续,又推出了更新和安装删除库的命令行工具,就是conda。
后面,Anaconda又开发了自己的软件仓库https://repo.anaconda.com/pkgs/,将跨语言依赖的一些数学库例如numpy,R语言的包,以及兼容微软windows平台的依赖包分别划分为main,R,msys2三个“频道”,根据不同支持平台提前编译二进制版本,并解决好依赖,保存于仓库的defaults channel,今天Anaconda使用conda命令安装依赖,默认就从defaults安装。
有了软件仓库后,本地就不一定需要内置一些常见数学库的包了,因此Anaconda公司又推出了Miniconda,只包含conda命令和必须依赖,体积很小,没有Anaconda自带的包和一些图形管理工具等,默认也是从defaults安装,Miniconda安装defaults包时,会被要求输入以下这些命令表示了解这些包在某些场景需要付费。
C:\Users\aaa>conda tos accept --override-channels --channel https://repo.anaconda.com/pkgs/main
accepted Terms of Service for https://repo.anaconda.com/pkgs/main
C:\Users\aaa> conda tos accept --override-channels --channel https://repo.anaconda.com/pkgs/r
accepted Terms of Service for https://repo.anaconda.com/pkgs/r
C:\Users\aaa> conda tos accept --override-channels --channel https://repo.anaconda.com/pkgs/msys2
accepted Terms of Service for https://repo.anaconda.com/pkgs/msys2虽然defaults中收录了几千个常见的软件包,但是毕竟都是一家公司的,后续开源社区又在anaconda.org上面创建了一个由开源社区维护的conda-forge channel,conda-forge在兼容性上虽然和官方defaults有些差距,但是大部分场景完全够用,而且软件包数量极多,更新快,随着2020年后从defaults安装对商业用途收费,conda-forge用的越来越多。
使用conda-forge上的库时,每次都要指定channel为conda-forge,非常不便,再加上conda需付费的只是defaults这个channel,Conda软件本身是开源的,因此开源社区基于Conda二次开发了一个非官方的包管理工具叫做miniforge,其默认的channel自然就是conda-forge,而且还额外用C++编写了一个多线程的mamba命令,可代替conda命令进行包管理,mamba命令用法也基本和conda兼容
今天,即使pip已经能解决这种跨语言依赖问题了,但是Conda依然在科学计算领域非常流行,作为科学计算的一部分,现在很多AI项目也选择Conda来管理依赖。
Conda同样支持虚拟环境,支持将包安装到某个虚拟环境中。
安装配置
C:\Users\lzj20>conda info
active environment : None
user config file : C:\Users\lzj20\.condarc
populated config files : D:\anaconda3\.condarc
C:\Users\lzj20\.condarc
conda version : 24.9.2
conda-build version : 24.9.0
python version : 3.12.7.final.0
solver : libmamba (default)
virtual packages : __archspec=1=skylake
__conda=24.9.2=0
__win=0=0
base environment : D:\anaconda3 (writable)
conda av data dir : D:\anaconda3\etc\conda
conda av metadata url : None
channel URLs : https://repo.anaconda.com/pkgs/main/win-64
https://repo.anaconda.com/pkgs/main/noarch
https://repo.anaconda.com/pkgs/r/win-64
https://repo.anaconda.com/pkgs/r/noarch
https://repo.anaconda.com/pkgs/msys2/win-64
https://repo.anaconda.com/pkgs/msys2/noarch
package cache : D:\conda_data\pkgs
envs directories : D:\conda_data\envs
D:\anaconda3\envs
C:\Users\lzj20\.conda\envs
C:\Users\lzj20\AppData\Local\conda\conda\envs
platform : win-64
user-agent : conda/24.9.2 requests/2.32.3 CPython/3.12.7 Windows/11 Windows/10.0.26300 solver/libmamba conda-libmamba-solver/24.9.0 libmambapy/1.5.8 aau/0.4.4 c/. s/. e/.
administrator : False
netrc file : None
offline mode : False
C:\Users\lzj20>conda config --set show_channel_urls yes.condarc
envs_dirs:
- D:\conda_data\envs
pkgs_dirs:
- D:\conda_data\pkgs"如果文章对您有帮助,可以请作者喝杯咖啡吗?"
微信支付
支付宝