作为一名Python开发者,你是否曾被各种环境管理工具搞得头晕眼花?今天,我们就来一场历史之旅,理清venv、pip、conda、miniconda之间的关系和发展脉络。时间轴:Python环境管理工具的演进
2010年前:史前时代 - 只有pip,全局安装,依赖冲突是家常便饭
2010年:virtualenv诞生 - 首次实现环境隔离
2013年:venv成为标准 - Python 3.3内置轻量级环境管理
2012年:Conda横空出世 - 为数据科学而生的全能选手
2015年:Miniconda出现 - Conda的轻量级版本
# 基础用法
pip install requests
pip install django==3.2.0
❌ 全局安装,包冲突严重
❌ 无法隔离不同项目环境
❌ 只管理Python包,不处理系统依赖
python -m venv myproject_env# 创建虚拟环境
# 激活环境
source myproject_env/bin/activate # Linux/Mac
myproject_env\Scripts\activate# Windows
pip install flask# 安装包
解决问题:项目环境隔离,避免"依赖地狱"局限性: pip对跨语言依赖的支持基本没有,这就导致采用c或者Fortran书写,采用python封装的库,pip几乎无法简单的安装。例如:Pandas、Numpy、Scipy

解决问题:将所有的python有关要用的计算科学库全部打包成名为Anaconda Distribution的安装包,让用户一次性全部安装 缺点:安装包巨大,无法更新,小众安装包没有,无法删除
可以从conda默认的软件仓库下载适用各种系统的安装包,并已处理好各种依赖问题,同时可以处理安装,更新卸载等一系列功能,除此之外还可以创建虚拟环境,这样就有了一个完全独立于官方pip和venv的软件生态,
Anaconda包含了Distribution科学计算库,python解释器以及conda命令等其他内容,占用大量内存空间,对于有经验的开发者可以安装miniconda,其只包含conda命令,python解释器以及少量必要依赖。
由anaconda公司提供托管平台,由开源社区维护的一个包罗万象的软件仓库(区别于默认仓库),使用时加上-c conda-forge 即可。

包含conda和mamba,其中conda的默认下载源被修改成了conda-forge,mamba则是用c++重新实现了的conda,其效率比原conda有很多提升,使用时只要把conda替换成mamba即可。