3、开发环境搭建:Python环境、虚拟环境、依赖管理、常用工具(Jupyter、VS Code)

大模型应用开发与传统的脚本编写有显著差异:项目通常依赖多个深度学习框架(如 PyTorch、Transformers)、API SDK(如 、DashScope)以及大量数据处理库。如果直接在全局 Python 环境中安装这些依赖,不同项目之间的版本冲突几乎不可避免。本章将系统讲解如何从零搭建一个专业、可复现且便于调试的 Python 开发环境,涵盖解释器安装、虚拟环境隔离、依赖锁定以及 Jupyter 与 VS Code 的高效配合。

Python 大模型开发环境全景图 Python 解释器 Python 3.10 / 3.11 / 3.12 pyenv / conda 管理 架构:x86 / ARM / MPS 虚拟环境 venv / virtualenv conda env 项目级隔离 依赖管理 pip + requirements.txt Poetry / uv 版本锁定与复现 开发工具 VS Code Jupyter Git / 调试器 典型项目工作流 创建项目 → 创建虚拟环境 → 安装依赖 → 编写代码 → 调试运行 → 冻结依赖 → 提交仓库 核心配置文件 • requirements.txt — 依赖清单 • pyproject.toml — 项目元数据 • .env — 环境变量() • .gitignore — 忽略规则 大模型开发关键依赖 • / anthropic / dashscope • transformers / langchain / llama-index • torch / tensorflow(GPU 版) • python-dotenv / requests / pydantic VS Code 推荐扩展 • Python / Pylance • Jupyter • GitLens / Remote-SSH • Docker / Dev Containers

3.1 Python 解释器安装与版本选择

核心原理:Python 解释器是将高级语言翻译为机器指令的核心程序。大模型开发中,解释器版本直接影响第三方库的兼容性。例如,Transformers 库在 Python 3.8 以下版本会出现类型注解错误,而某些最新的推理优化库(如 vLLM)要求 Python ≥3.10。因此,选择正确的解释器版本是环境搭建的第一步。

操作流程:

  1. 检查系统现有版本:在终端执行 python3 --version 或 python --version(Windows)。
  2. 安装 pyenv(macOS/Linux)或使用 conda:pyenv 允许在同一台机器上并行管理多个 Python 版本,且无需管理员权限。
  3. 安装指定版本:pyenv install 3.11.9,然后通过 pyenv global 3.11.9 或 pyenv local 3.11.9 设置版本。
  4. 验证安装:运行 python -c "import sys; print(sys.version)" 确认路径和版本。
经验提醒:对于大模型开发,推荐使用 Python 3.10 或 3.11。3.12 虽然性能更好,但部分深度学习的 C++ 扩展(如某些旧版 TensorFlow)尚未完全适配。若使用 Apple Silicon(M1/M2/M3),建议安装原生 arm64 版本,避免 Rosetta 转译带来的性能损耗。

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,每个环境只安装各自所需的依赖,彻底消除冲突。

对比维度venvconda
包管理范围仅 Python 包Python 包 + 系统库(CUDA、MKL)
环境创建速度快(秒级)较慢(需解析依赖)
Python 版本切换依赖 pyenv内置支持
适用场景纯 Python 项目数据科学、GPU 加速项目
常见误区:不要将虚拟环境目录(如 .venv)提交到 Git 仓库。应在项目根目录创建 .gitignore 文件,添加 .venv/、__pycache__/、*.pyc 等规则。同时,激活虚拟环境后,终端提示符会显示 (.venv) 前缀,若未显示则说明激活失败。

3.3 依赖管理:从 requirements.txt 到 Poetry

核心原理:依赖管理的核心目标是可复现性——确保任何人在任何时间克隆项目后,都能安装到完全一致的依赖版本。requirements.txt 是 Python 社区最基础的依赖清单格式,而 Poetry 和 uv 则提供了更高级的锁定机制和依赖解析。

操作流程(以 pip 为例):

  1. 生成初始依赖清单:激活虚拟环境后,执行 pip freeze > requirements.txt。此命令会列出所有已安装包及其精确版本号。
  2. 安装依赖:新环境执行 pip install -r requirements.txt。
  3. 区分生产与开发依赖:使用 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
实战场景:在团队协作中,成员 A 使用 Windows,成员 B 使用 macOS。如果仅使用 requirements.txt,某些包(如 torch)在不同平台上的 wheel 包名不同,可能导致安装失败。Poetry 的 lock 文件会记录每个平台对应的哈希值,确保跨平台一致性。此外,对于大模型项目,建议将 torch、transformers 等大型依赖放在 requirements 文件的顶部,并注释说明其用途,便于后续维护。

3.4 常用工具:Jupyter Notebook 与 VS Code 的高效协同

核心原理:Jupyter Notebook 采用单元格(Cell)式交互,适合数据探索、Prompt 调试和结果可视化;VS Code 则提供完整的 IDE 功能,包括智能补全、断点调试和 Git 集成。两者结合使用时,VS Code 作为前端编辑器,Jupyter 作为内核执行引擎,实现"写代码-看结果-改代码"的快速迭代。

配置步骤:

  1. 在 VS Code 中安装扩展:Python(由 Microsoft 发布)、Jupyter、Pylance。
  2. 选择解释器:按 Ctrl+Shift+P(macOS 为 Cmd+Shift+P),输入 "Python: Select Interpreter",选择已创建的虚拟环境。
  3. 创建 Jupyter Notebook:新建 .ipynb 文件,VS Code 会自动关联 Jupyter 内核。
  4. 调试模式:在 Notebook 单元格中设置断点,点击"调试单元格"即可进入交互式调试。

案例拆解:假设你需要调试一个调用 API 的 Prompt 模板。在 Jupyter 中,你可以将 Prompt 拆分为多个单元格:第一个单元格定义系统提示词,第二个单元格定义用户输入,第三个单元格调用 API 并打印响应。当发现输出不符合预期时,无需重新运行整个脚本,只需修改第二个单元格并重新执行。同时,利用 VS Code 的变量监视器,可以实时查看 response.usage.prompt_tokens 等指标。

功能维度Jupyter NotebookVS Code + Python 脚本
适合场景数据探索、Prompt 调试、教学演示生产级代码、模块化开发、单元测试
代码组织单元格顺序执行函数/类定义 + 主入口
错误处理单元格级异常显示完整堆栈跟踪 + 调试器
版本控制输出结果会存入文件(需清理)纯代码文件,diff 清晰
常见误区:很多初学者将 直接写在 Notebook 中,导致密钥泄露。正确做法是使用 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 检查依赖更新,但升级前务必在测试环境中验证兼容性,避免破坏现有功能。