第1章 Conda简介:什么是Conda、与pip的区别、Miniconda vs Anaconda
1.1 什么是 Conda?
Conda 是一个跨平台的包管理器 + 环境管理器。你想想看,做 Python 项目最烦什么?无非是依赖冲突、版本打架、跨平台环境不一致。Conda 就是来解决这些的。
我最早接触 Conda 是在做深度学习模型部署的时候。当时公司服务器上既有 PyTorch 1.8 的项目,又有 TensorFlow 2.3 的遗留代码,用 pip 装得乱七八糟。后来一个老同事扔了句「试试 Conda 环境隔离」,从那以后我就再没用过裸 pip 了。
Conda 的核心能力其实就三个:
- 包管理——安装、更新、卸载 Python 和非 Python 的包(比如 CUDA、OpenCV 的 C++ 底层库)
- 环境管理——创建完全隔离的独立环境,互不干扰
- 跨平台——Windows、macOS、Linux 上行为一致
说白了,Conda 就是给每个项目造一个「无菌实验室」,里面用什么版本的 Python、什么版本的包,你自己说了算。而且 Conda 还能帮你解决底层二进制依赖,这一点 pip 做不到。
my_project_env。这样删项目时直接删环境,干净彻底。
1.2 Conda 与 pip 的区别
很多新手会混淆 Conda 和 pip。其实它们根本不是同一个层面的东西。我做个表格给你看:
| 对比维度 | Conda | pip |
|---|---|---|
| 所属生态 | Anaconda 生态(独立通道) | PyPI(Python 生态) |
| 能装什么 | Python 包 + 非 Python 二进制库(如 CUDA、HDF5) | 纯 Python 包(少数 wheel 带编译) |
| 环境管理 | 内置 conda create / env |
需借助 venv 或 virtualenv |
| 依赖解决 | SAT 求解器,自动找兼容版本 | 线性依赖,容易冲突 |
| 默认源 | Anaconda 官方 channel / conda-forge | PyPI 官方源 |
| 二进制支持 | 自动处理动态链接库,无需编译器 | 部分包需要本地编译(如 numpy、scipy) |
核心差异一句话:Conda 连 C 库一起管,pip 只管 Python 包。如果你只用纯 Python 包(比如 Flask、Requests),pip 完全够用;但只要涉及底层库(CUDA、OpenCV、GDAL),Conda 就舒服得多。
我曾经碰到过一个坑:同事用 pip 装 opencv-python,结果视频解码库没编译进去,所有视频处理代码全部报错。换成 Conda 的 opencv 包后一次搞定——因为它自带了 ffmpeg 的二进制依赖。
1.3 Miniconda vs Anaconda
Anaconda 是一个大而全的发行版,内置了 1500+ 科学计算包。Miniconda 是它的最小版本,只带 Conda 本身和 Python。两者关系就像「全家桶 vs 自选套餐」。
- Anaconda(约 3GB)——开箱即用,适合初学者、上课、不想折腾环境的人。包都是预编译好的,安装就能跑。
- Miniconda(约 50MB)——极简,适合生产环境、Docker 镜像、需要自己掌控依赖的开发者。
我个人强烈推荐生产环境用 Miniconda。为什么?占空间小、启动快、升级灵活。Anaconda 里有一大半包你用不上,纯属浪费硬盘。我记得有次在客户内网服务器上部署,空间只剩 2GB,Anaconda 装完直接警告爆满。换成 Miniconda 后,只装了项目需要的包,空间还剩很多。
另外,如果你在 Docker 里用 Conda,官方推荐用 continuumio/miniconda3 镜像,基础镜像体积只有 200MB 左右,非常适合 CI/CD。
1.4 快速上手:一分钟装好 Conda
不管你选 Miniconda 还是 Anaconda,安装都很简单。去官网下载对应系统的安装包就行。我习惯用命令行装 Miniconda(Linux/macOS):
# 下载 Miniconda 安装脚本(Python 3.8+)
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
# 执行安装(一路 yes)
bash Miniconda3-latest-Linux-x86_64.sh
# 安装完成后初始化 shell
conda init
# 验证是否装好
conda --version
conda 24.5.0),说明安装成功。
安装完成后,第一件事就是配置国内镜像源,否则下载包会很慢(尤其是 conda-forge 通道)。我之前在海外用默认通道没问题,但回国后不换源简直没法用。配置方法很简单:
# 添加 conda-forge 通道(国内建议用清华源)
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --set show_channel_urls yes