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

"如果文章对您有帮助,可以请作者喝杯咖啡吗?"

微信二维码

微信支付

支付宝二维码

支付宝


Conda(Anaconda)
https://blog.liuzijian.com/post/2026/09/27/conda/
作者
Liu Zijian
发布于
2026年9月27日
许可协议