3、开发环境搭建:Python环境、虚拟环境、依赖管理、常用工具(Jupyter、VS Code)
大模型应用开发与传统的脚本编写有显著差异:项目通常依赖多个深度学习框架(如 PyTorch、Transformers)、API SDK(如 、DashScope)以及大量数据处理库。如果直接在全局 Python 环境中安装这些依赖,不同项目之间的版本冲突几乎不可避免。本章将系统讲解如何从零搭建一个专业、可复现且便于调试的 Python 开发环境,涵盖解释器安装、虚拟环境隔离、依赖锁定以及 Jupyter 与 VS Code 的高效配合。
3.1 Python 解释器安装与版本选择
核心原理:Python 解释器是将高级语言翻译为机器指令的核心程序。大模型开发中,解释器版本直接影响第三方库的兼容性。例如,Transformers 库在 Python 3.8 以下版本会出现类型注解错误,而某些最新的推理优化库(如 vLLM)要求 Python ≥3.10。因此,选择正确的解释器版本是环境搭建的第一步。
操作流程:
- 检查系统现有版本:在终端执行
python3 --version或python --version(Windows)。 - 安装 pyenv(macOS/Linux)或使用 conda:pyenv 允许在同一台机器上并行管理多个 Python 版本,且无需管理员权限。
- 安装指定版本:
pyenv install 3.11.9,然后通过pyenv global 3.11.9或pyenv local 3.11.9设置版本。 - 验证安装:运行
python -c "import sys; print(sys.version)"确认路径和版本。
3.2 虚拟环境:项目隔离的基石
核心原理:虚拟环境为每个项目创建独立的 Python 解释器副本和 site-packages 目录。当项目 A 需要 Django 3.2 而项目 B 需要 Django 4.2 时,虚拟环境确保两者互不干扰。venv 是 Python 3.3+ 内置的轻量级方案,而 conda 则更适合需要管理非 Python 依赖(如 CUDA、MKL)的场景。
创建与激活流程:
# 使用 venv(Python 3.3+ 内置)
python -m venv .venv
# 激活(macOS/Linux)
source .venv/bin/activate
# 激活(Windows PowerShell)
.venv\Scripts\Activate.ps1
# 使用 conda(推荐用于 GPU 环境)
conda create -n llm-dev python=3.11
conda activate llm-dev
案例拆解:假设你同时参与两个项目:一个是基于 LangChain 的 RAG 问答系统,另一个是微调 LLaMA 模型的训练脚本。前者需要 langchain==0.1.0,后者需要 transformers==4.38.0 和 torch==2.2.0。如果共用全局环境,安装顺序不同可能导致依赖冲突。通过创建两个独立虚拟环境 rag-env 和 finetune-env,每个环境只安装各自所需的依赖,彻底消除冲突。
| 对比维度 | venv | conda |
|---|---|---|
| 包管理范围 | 仅 Python 包 | Python 包 + 系统库(CUDA、MKL) |
| 环境创建速度 | 快(秒级) | 较慢(需解析依赖) |
| Python 版本切换 | 依赖 pyenv | 内置支持 |
| 适用场景 | 纯 Python 项目 | 数据科学、GPU 加速项目 |
.gitignore 文件,添加 .venv/、__pycache__/、*.pyc 等规则。同时,激活虚拟环境后,终端提示符会显示 (.venv) 前缀,若未显示则说明激活失败。
3.3 依赖管理:从 requirements.txt 到 Poetry
核心原理:依赖管理的核心目标是可复现性——确保任何人在任何时间克隆项目后,都能安装到完全一致的依赖版本。requirements.txt 是 Python 社区最基础的依赖清单格式,而 Poetry 和 uv 则提供了更高级的锁定机制和依赖解析。
操作流程(以 pip 为例):
- 生成初始依赖清单:激活虚拟环境后,执行
pip freeze > requirements.txt。此命令会列出所有已安装包及其精确版本号。 - 安装依赖:新环境执行
pip install -r requirements.txt。 - 区分生产与开发依赖:使用
requirements-dev.txt存放 pytest、black、ruff 等开发工具。
进阶方案——Poetry:Poetry 通过 pyproject.toml 声明项目元数据和直接依赖,并自动生成 poetry.lock 文件锁定所有传递依赖的精确版本。其优势在于:
- 自动解析依赖冲突,避免手动调整版本号。
- 支持分组依赖(如
dev组、docs组)。 - 内置虚拟环境管理,无需手动创建。
# 安装 Poetry
curl -sSL https://install.python-poetry.org | python3 -
# 初始化项目
poetry new my-llm-project
cd my-llm-project
# 添加依赖
poetry add langchain
# 添加开发依赖
poetry add --group dev pytest black
torch、transformers 等大型依赖放在 requirements 文件的顶部,并注释说明其用途,便于后续维护。
3.4 常用工具:Jupyter Notebook 与 VS Code 的高效协同
核心原理:Jupyter Notebook 采用单元格(Cell)式交互,适合数据探索、Prompt 调试和结果可视化;VS Code 则提供完整的 IDE 功能,包括智能补全、断点调试和 Git 集成。两者结合使用时,VS Code 作为前端编辑器,Jupyter 作为内核执行引擎,实现"写代码-看结果-改代码"的快速迭代。
配置步骤:
- 在 VS Code 中安装扩展:Python(由 Microsoft 发布)、Jupyter、Pylance。
- 选择解释器:按
Ctrl+Shift+P(macOS 为Cmd+Shift+P),输入 "Python: Select Interpreter",选择已创建的虚拟环境。 - 创建 Jupyter Notebook:新建
.ipynb文件,VS Code 会自动关联 Jupyter 内核。 - 调试模式:在 Notebook 单元格中设置断点,点击"调试单元格"即可进入交互式调试。
案例拆解:假设你需要调试一个调用 API 的 Prompt 模板。在 Jupyter 中,你可以将 Prompt 拆分为多个单元格:第一个单元格定义系统提示词,第二个单元格定义用户输入,第三个单元格调用 API 并打印响应。当发现输出不符合预期时,无需重新运行整个脚本,只需修改第二个单元格并重新执行。同时,利用 VS Code 的变量监视器,可以实时查看 response.usage.prompt_tokens 等指标。
| 功能维度 | Jupyter Notebook | VS Code + Python 脚本 |
|---|---|---|
| 适合场景 | 数据探索、Prompt 调试、教学演示 | 生产级代码、模块化开发、单元测试 |
| 代码组织 | 单元格顺序执行 | 函数/类定义 + 主入口 |
| 错误处理 | 单元格级异常显示 | 完整堆栈跟踪 + 调试器 |
| 版本控制 | 输出结果会存入文件(需清理) | 纯代码文件,diff 清晰 |
python-dotenv 库加载 .env 文件,并在 .gitignore 中排除该文件。此外,Notebook 中的输出(如 DataFrame 快照)会占用大量存储空间,建议在提交代码前使用 jupyter nbconvert --clear-output 清理输出。
3.5 环境搭建完整流程与复盘
总结复盘:一个专业的大模型开发环境应满足以下标准:可复现(任何机器可一键搭建)、隔离(项目间互不影响)、高效(调试与迭代流畅)。以下为推荐的标准操作流程:
# 1. 创建项目目录
mkdir my-llm-app && cd my-llm-app
# 2. 初始化 Git 仓库
git init
# 3. 创建虚拟环境
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
# 4. 升级 pip 并安装核心库
pip install --upgrade pip
pip install python-dotenv langchain
# 5. 生成依赖清单
pip freeze > requirements.txt
# 6. 创建 .env 文件存放密钥
echo "_=sk-xxx" > .env
# 7. 创建 .gitignore
echo -e ".venv/\n.env\n__pycache__/\n*.pyc" > .gitignore
排障指南:若遇到 ModuleNotFoundError,首先检查当前解释器路径(which python),确认是否在正确的虚拟环境中。若 pip 安装速度慢,可配置国内镜像源(如清华源):pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple。对于 GPU 环境,务必使用 conda install pytorch torchvision torchaudio pytorch-cuda=12.1 -c pytorch -c nvidia 安装 CUDA 版本,而非默认的 CPU 版本。
setup.sh 或 Makefile 脚本,放入项目仓库。这样新成员只需执行 make setup 即可完成全部配置。同时,定期使用 pip list --outdated 检查依赖更新,但升级前务必在测试环境中验证兼容性,避免破坏现有功能。