Python 中的 Conda 详解:它到底解决了什么问题?

目录

[一、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 解决"底层依赖 + 复杂环境"。

相关推荐
大闲在人10 小时前
C、C++区别还是蛮大的
c语言·开发语言·c++
Cosmoshhhyyy11 小时前
《Effective Java》解读第39条:注解优先于命名模式
java·开发语言
清水白石00811 小时前
Python 纯函数编程:从理念到实战的完整指南
开发语言·python
掘根11 小时前
【C++STL】平衡二叉树(AVL树)
开发语言·数据结构·c++
twilight_46911 小时前
机器学习与模式识别——机器学习中的搜索算法
人工智能·python·机器学习
叫我一声阿雷吧12 小时前
JS实现响应式导航栏(移动端汉堡菜单)|适配多端+无缝交互【附完整源码】
开发语言·javascript·交互
前路不黑暗@12 小时前
Java项目:Java脚手架项目的文件服务(八)
java·开发语言·spring boot·学习·spring cloud·docker·maven
毅炼12 小时前
Java 集合常见问题总结(3)
java·开发语言·后端