第一章:Conda —— 重量级系统大管家
conda 是一个强大的开源包管理和环境管理系统,能够跨平台工作(Windows、macOS、Linux)。它特别适合处理包含 C/C++ 扩展的复杂依赖关系,因此在涉及深度学习框架(如 PyTorch、TensorFlow)和复杂数据处理的开发中非常流行。
1. 安装 Conda
通常有两种主流方式来获取 Conda:
- Miniconda(强烈推荐): 只包含 Conda 包管理器、Python 和最基础的依赖,体积小,轻量级。非常适合需要精细控制环境的开发者。
- Anaconda: 预装了数百个科学计算和数据分析包,体积庞大(通常需要几 GB 空间),适合不想手动安装各种包的初学者。
安装完成后,打开终端或命令行,通过运行以下命令验证:
2. 环境管理 (Environment Management)
Conda 的核心优势在于能够创建完全隔离的虚拟环境。这对于避免不同项目之间的依赖冲突(例如不同项目需要不同版本的 Python 或 CUDA)至关重要。
创建环境
创建一个名为 ai-agent,并指定 Python 版本为 3.10 的环境:
conda create --name ai-agent python=3.10
(提示:--name 可以简写为 -n)
激活与退出环境
查看环境
列出系统中所有的 Conda 环境(当前激活的环境旁边会有一个 * 号):
conda env list# 或者 conda info --envs
删除环境
如果你不再需要某个环境,可以将其彻底删除以释放空间:
conda remove --name ai-agent --all
3. 包管理 (Package Management)
在激活的环境中,你可以自由地安装、更新和删除包。Conda 不仅能安装 Python 包,还能直接安装系统级别的非 Python 依赖包。
安装包
conda install numpy pandas
你也可以指定安装源(Channel)。例如,安装 PyTorch 时通常需要指定官方的 pytorch 和 nvidia 渠道来获取正确的 GPU 支持:
conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia
查看已安装的包
查看当前激活环境中安装的所有包及其版本:
更新与删除包
4. 环境的导出与复用 (环境复现)
当你需要将项目部署到云服务器,或者与团队成员分享代码时,确保运行环境的一致性非常关键。
导出环境配置
将当前环境的所有依赖项(包括版本号)导出到一个 YAML 文件中:
conda env export > environment.yml
从配置文件创建环境
在另一台机器上,可以通过这个 YAML 文件一键复原出一模一样的环境:
conda env create -f environment.yml
5. 实用技巧
- 清理缓存节省空间: Conda 在下载包后会保留压缩包缓存,随着时间推移会占用大量 C 盘/系统盘空间。定期清理是个好习惯:
- 配合 pip 使用: 虽然 Conda 拥有庞大的包库,但有些最新的或小众的库可能只在 PyPI 上提供。你完全可以在 Conda 激活的环境中使用
pip install 来安装这些包,它们会被安全地安装在当前的 Conda 环境中。
第二章:uv 基础教程 —— 纯 Python 领域的极速利器
uv 是由 Astral(开发了 ruff 的团队)使用 Rust 编写的极速 Python 包和项目管理器。它不仅可以作为 pip、pip-tools 和 virtualenv 的直接替代品,现在还提供了类似 poetry 或 rye 的完整项目管理功能。
1. 安装 uv
根据你的操作系统,选择合适的安装命令:
curl -LsSf https://astral.sh/uv/install.sh | sh
或者使用 Homebrew (macOS):
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
安装完成后,可以通过运行 uv --version 来验证。
2. 现代项目管理工作流(推荐)
uv 现在支持声明式的项目管理,这是目前最推荐的使用方式。
初始化项目
创建一个新目录并初始化项目:
mkdir my_projectcd my_projectuv init
这会生成一个 pyproject.toml 文件、一个 .python-version 文件和一个 hello.py 示例。
添加依赖
不需要手动创建虚拟环境,直接添加包(例如 requests):
uv 会自动:
- 解析依赖并更新
pyproject.toml 和 uv.lock。 - 在后台创建一个
.venv 虚拟环境(如果尚不存在)。
运行代码
你可以直接使用 uv run 来执行脚本,它会自动在隔离的项目环境中运行,无需手动激活虚拟环境:
3. Python 版本管理
uv 可以直接为你下载和管理 Python 解释器,无需依赖系统自带的 Python。
uv run --python 3.12 python
4. 传统工作流(作为 pip 的极速替代品)
如果你现有的项目仍然使用 requirements.txt,你可以将 uv 纯粹用作一个更快的 pip。
创建虚拟环境
速度比传统的 python -m venv 快几个数量级:
激活虚拟环境(与平时一样):
- macOS/Linux:
source .venv/bin/activate - Windows:
.venv\Scripts\activate
安装依赖
只需将平时的 pip 替换为 uv pip:
uv pip install -r requirements.txtuv pip install fastapi uvicorn
编译锁定文件 (pip-tools 替代)
如果你习惯使用 pip-compile 来锁定依赖:
uv pip compile requirements.in -o requirements.txtuv pip sync requirements.txt
5. 核心优势总结
- 极致的速度: 缓存机制和并发下载让安装速度提升 10-100 倍。
- 全局缓存: 相同的包在本地只会存储一次,通过硬链接(hard links)链接到各个虚拟环境,大幅节省磁盘空间。
- 无需预装 Python:
uv 可以自行引导下载 Python 环境。 - 全能工具: 将依赖解析、虚拟环境创建、Python 版本管理和脚本执行集成在一个二进制文件中。
第三章:核心差异与项目技术选型
1. 核心维度对比
| | |
|---|
| 速度与体积 | | 极快 |
| 管理范围 | Python 包 + 系统级底层库 (如 CUDA) | |
| 依赖锁定 | environment.yml | |
| 适用场景 | | Web 开发、Agent 开发、Serverless 部署 |
2. 实际项目中的技术选型指南
选择哪一个工具,完全取决于你当前项目的工程属性和部署目标:
场景 A:AI Agent 应用开发与 Serverless 部署 (强烈推荐:uv) 当你构建包含 PC 和 H5 双端的 RTC AI 客服系统,或者开发基于 RAG 的视频回复后端服务时,通常需要将服务打包部署到阿里云、火山引擎等云平台的 Serverless 架构中。
- 为什么选 uv:Serverless 平台对代码包的体积(部署配额)和冷启动时间极其敏感。
uv 构建的依赖树极其干净,没有臃肿的系统冗余库;同时其极速的解析能力能大幅降低 CI/CD 流水线的打包耗时,是云原生部署的最佳拍档。
场景 B:AI 模型微调与底层训练环境搭建 (强烈推荐:Conda) 如果你正在进行大语言模型的微调实战,或者在编写关于 AI 模型微调的教程与大纲。
- 为什么选 Conda:模型微调绝不仅仅是
pip install torch 这么简单。它通常需要严格匹配特定版本的 CUDA Toolkit、cuDNN,甚至用于算子编译的 C++ 编译器(如 ninja、gcc)。Conda 能够将这些“脏活累活”全部封装在隔离的虚拟环境中,防止底层依赖版本冲突破坏宿主机的显卡驱动。
场景 C:Python 自动化脚本与短视频处理 (推荐:uv) 对于编写 Python 脚本来辅助自动化工作(例如批量抓取数据、调用 API 生成文案,或辅助抖音短视频的海报批量生成),通常只依赖 requests、Pillow、openai 等纯 Python 库。
- 为什么选 uv:随用随建,极致轻快。使用
uv run script.py 甚至都不需要手动管理环境,极大提升开发脚本的幸福感。
场景 D:复杂工程的黄金组合 (Conda + uv) 在实际的企业级重型开发中,目前最流行的高阶工作流是将两者结合:
- 使用 Conda 创建基础环境,并安装必需的重量级系统底层依赖(如 CUDA 运行库)。
- 在激活的 Conda 环境中,使用 uv (
uv pip install) 来接管所有纯 Python 依赖的安装,享受起飞般的拉取速度。