目录
[一、Conda 是什么?](#一、Conda 是什么?)
[二、为什么会有 Conda?pip + venv 不够吗?](#二、为什么会有 Conda?pip + venv 不够吗?)
[1️⃣ pip + venv 的能力边界](#1️⃣ pip + venv 的能力边界)
[2️⃣ Conda 的核心价值](#2️⃣ Conda 的核心价值)
[三、Conda 能解决哪些"真实世界的问题"?](#三、Conda 能解决哪些“真实世界的问题”?)
[四、Conda 家族成员(很多人分不清)](#四、Conda 家族成员(很多人分不清))
[1️⃣ Anaconda](#1️⃣ Anaconda)
[2️⃣ Miniconda(强烈推荐)](#2️⃣ Miniconda(强烈推荐))
[3️⃣ Mambaforge / mamba(进阶)](#3️⃣ Mambaforge / mamba(进阶))
[五、Conda 的核心概念(必须搞懂)](#五、Conda 的核心概念(必须搞懂))
[1️⃣ Conda Environment(环境)](#1️⃣ Conda Environment(环境))
[2️⃣ Channel(软件源)](#2️⃣ Channel(软件源))
[六、Conda 的基本使用(必会)](#六、Conda 的基本使用(必会))
[1️⃣ 查看 conda 版本](#1️⃣ 查看 conda 版本)
[2️⃣ 创建环境(指定 Python 版本)](#2️⃣ 创建环境(指定 Python 版本))
[3️⃣ 激活 / 退出环境](#3️⃣ 激活 / 退出环境)
[4️⃣ 查看已有环境](#4️⃣ 查看已有环境)
[5️⃣ 安装包(conda 优先)](#5️⃣ 安装包(conda 优先))
[6️⃣ conda + pip 混用(允许,但要懂)](#6️⃣ conda + pip 混用(允许,但要懂))
[1️⃣ 导出环境](#1️⃣ 导出环境)
[2️⃣ 一键恢复环境](#2️⃣ 一键恢复环境)
[八、Conda 在 AI / 大模型中的典型用法](#八、Conda 在 AI / 大模型中的典型用法)
[1️⃣ 创建 PyTorch + CUDA 环境](#1️⃣ 创建 PyTorch + CUDA 环境)
[2️⃣ 常见 LLM / AI 依赖](#2️⃣ 常见 LLM / AI 依赖)
[九、Conda vs venv:该怎么选?](#九、Conda vs venv:该怎么选?)
[📌 一句话决策表](#📌 一句话决策表)
[十、Conda 的最佳实践(避坑)](#十、Conda 的最佳实践(避坑))
[✅ 1. 不在 base 环境干活](#✅ 1. 不在 base 环境干活)
[✅ 2. 固定 Python 版本](#✅ 2. 固定 Python 版本)
[✅ 3. channel 顺序推荐](#✅ 3. channel 顺序推荐)
[❌ 常见坑](#❌ 常见坑)
[十一、venv + conda 能不能一起用?](#十一、venv + conda 能不能一起用?)
一、Conda 是什么?
Conda 是一个「跨语言的包管理器 + 环境管理器」。
注意这句话里的两个关键词:
包管理器(Package Manager) + 环境管理器(Environment Manager)
它不只是 Python 的工具,而是:
-
可以管理 Python 版本
-
可以管理 Python 包
-
还能管理 非 Python 的底层依赖
-
C / C++
-
CUDA
-
MKL
-
系统级动态库(.so / .dll)
-
一句话理解:
conda = 帮你把"Python + 第三方库 + 底层依赖"一起管好
二、为什么会有 Conda?pip + venv 不够吗?
1️⃣ pip + venv 的能力边界
pip + venv 能解决:
-
Python 包隔离
-
项目级依赖冲突
但 解决不了这些问题:
❌ C/C++ 依赖缺失
❌ numpy / scipy 安装失败
❌ CUDA / cuDNN 版本不匹配
❌ 不同项目需要不同 Python 版本
你一定见过这种报错 👇
ImportError: libstdc++.so.6: version `GLIBCXX_3.4.xx' not found
👉 这不是 Python 的问题,是系统依赖问题。
2️⃣ Conda 的核心价值
Conda 的目标是:
让你"不用懂 C++ / 编译 / 系统库",也能把科学计算和 AI 环境跑起来
它直接提供 编译好的二进制包(Binary Package)。
三、Conda 能解决哪些"真实世界的问题"?
| 问题 | pip + venv | conda |
|---|---|---|
| Python 版本切换 | ❌ | ✅ |
| numpy / scipy 安装 | 经常失败 | ✅ |
| CUDA / cuDNN 管理 | ❌ | ✅ |
| 跨平台一致性 | 一般 | 很好 |
| AI / 科学计算 | 勉强 | ⭐⭐⭐⭐⭐ |
四、Conda 家族成员(很多人分不清)
1️⃣ Anaconda
-
全家桶(几 GB)
-
自带:
-
Python
-
numpy / pandas / matplotlib
-
Jupyter
-
📌 适合:新手 / 教学 / 数据分析
2️⃣ Miniconda(强烈推荐)
-
精简版 conda
-
只包含:
-
conda
-
Python
-
📌 生产 / AI / 工程强烈推荐
后文所有示例,默认用 Miniconda
3️⃣ Mambaforge / mamba(进阶)
-
conda 的 超快实现
-
解决 conda 慢的问题
📌 大模型 / 复杂依赖环境常用
五、Conda 的核心概念(必须搞懂)
1️⃣ Conda Environment(环境)
每个 conda 环境是一个完整、独立的运行世界:
-
独立 Python
-
独立 site-packages
-
独立底层库
conda ├── base ├── py38 ├── py310-ai └── llm-env
2️⃣ Channel(软件源)
Conda 的包来源,类似 pip 的 PyPI。
常见 channel:
-
defaults -
conda-forge(最重要) -
pytorch -
nvidia
📌 顺序很重要
六、Conda 的基本使用(必会)
1️⃣ 查看 conda 版本
conda --version
2️⃣ 创建环境(指定 Python 版本)
conda create -n py310 python=3.10
3️⃣ 激活 / 退出环境
conda activate py310 conda deactivate
4️⃣ 查看已有环境
conda env list
5️⃣ 安装包(conda 优先)
conda install numpy pandas
6️⃣ conda + pip 混用(允许,但要懂)
conda install numpy pip install requests
📌 原则:
-
能用 conda 装的,优先 conda
-
conda 没有的,再用 pip
七、环境复制与可复现(非常重要)
1️⃣ 导出环境
conda env export > environment.yml
2️⃣ 一键恢复环境
conda env create -f environment.yml
👉 AI / 团队协作 / 服务器部署的神器
八、Conda 在 AI / 大模型中的典型用法
1️⃣ 创建 PyTorch + CUDA 环境
conda create -n torch python=3.10 conda activate torch conda install pytorch pytorch-cuda=11.8 -c pytorch -c nvidia
你不需要:
-
自己装 CUDA
-
自己配 cuDNN
-
自己编译 PyTorch
2️⃣ 常见 LLM / AI 依赖
conda install numpy scipy scikit-learn pip install transformers datasets accelerate
九、Conda vs venv:该怎么选?
📌 一句话决策表
| 场景 | 选谁 |
|---|---|
| Web / 后端服务 | venv |
| 脚本 / 运维 | venv |
| 数据分析 | conda |
| AI / 深度学习 | conda |
| CUDA / 科学计算 | conda |
👉 不是对立关系,而是分工明确
十、Conda 的最佳实践(避坑)
✅ 1. 不在 base 环境干活
conda config --set auto_activate_base false
✅ 2. 固定 Python 版本
conda create -n proj python=3.10
✅ 3. channel 顺序推荐
conda config --add channels conda-forge conda config --set channel_priority strict
❌ 常见坑
-
在 base 里装一堆包
-
conda / pip 乱混
-
不导出 environment.yml
-
升级 Python 把环境搞炸
十一、venv + conda 能不能一起用?
可以,但一般没必要。
📌 原则:
-
conda 管 Python + 底层依赖
-
pip 管 Python 生态
实际项目中:
conda 环境 ≈ venv 的超集
一句话总结(送你一句能记住的)
pip 解决"装包",venv 解决"隔离",
conda 解决"底层依赖 + 复杂环境"。