00 · 环境准备:能跑起来,才有后面的一切
本片目标:从零搭起能跑 LangChain 的机器——装 Miniconda、配 conda、建learn-langchain环境、装齐所有包、配好.env、跑通第一段”能验证”的代码。 数据字典:.condarc 配置项、包版本一览、.env 变量、数据文件清单。
1. 上集回顾
这是第 0 篇,没有上一篇。但整个系列的逻辑必然性从这里开始:
你的目标是把 LangChain 学到能搭 RAG 对话机器人。而 LangChain 是一个生态(十几个包),不是一个大包。装错了、装少了、装到别的环境里,后面每一篇的代码都会报 ModuleNotFoundError。所以第一篇必须是”环境”——不是因为它简单,而是因为它是后面所有代码能运行的地基。
另外,你本机可能没有独立的 Python 环境、没有 conda——这些都要从零配。这套教程的所有命令都是 Windows + Miniconda + Python 3.11 实测。
2. 第一幕:装 Miniconda(三步走)
为什么要 Miniconda(而不是直接装 Python):Python 环境就像衣柜——不分层,所有包堆一起,装什么都互相干扰。conda 能建独立环境层(learn-langchain),每层放一套依赖,互不污染。
① 下载:别去官网(国外,下载慢),走清华源:
- 安装目录:建议装到非 C 盘(如
D:\lib\miniconda3),不占系统盘; - 勾选:
Add Miniconda3 to my PATH environment variable☑ ——勾了才能在任意终端直接敲conda(官网默认不勾,但勾了更方便,风险可接受)。
没勾选 “Add to PATH” 怎么办:装完发现 where.exe conda 报”找不到”,不用重装——手动把上面三个路径加进用户 PATH 即可,或者装完在开始菜单用 “Anaconda Prompt (miniconda3)” 快捷方式(它自带 PATH),后续课程命令照常能跑。
3. 第二幕:conda init + 配置 .condarc
3.1 conda init(终端初始化)
装完 conda 还不能直接用conda activate——需要让 conda 往你的终端配置($PROFILE)注入引导脚本:
conda init 会在 C:\Users\<你>\Documents\WindowsPowerShell\profile.ps1 注入引导脚本,每次新开终端自动执行 conda activate 'base'。验证方式:新开一个终端,看提示符前面有没有 (base):
如果新终端提示符没有为什么必须做:(base),但conda activate learn-langchain能正常切换(提示符变(learn-langchain)),说明 conda 本身已工作——只是你的终端没有加载 conda 注入的引导脚本(profile.ps1),重新检查conda init powershell是否执行过、终端是否完全关闭后重新打开(不是新开标签页)。
conda activate 的原理是——conda 算出要改哪些环境变量,输出一串 PowerShell 赋值语句,这串语句必须有 init 注入的引导脚本接住并执行,环境才会真的切换。
3.2 配置 .condarc(先配源和路径,再建环境)
建环境之前先配 conda——不然下载走官方源(慢),环境建到默认目录。配置文件在 C:\Users\<你>\.condarc。
为什么 6 个源:配置方式(二选一):pkgs/main是主通道(绝大多数包);pro/、r/、free/是清华镜像的历史/专用通道(装极老包时能找到);conda-forge是社区源镜像(有些包只在 conda-forge 有);defaults是官方兜底。strict模式下按列表顺序逐个找,main找不到才往后走。
conda info 看 base environment / envs directories / channel URLs 三行。
pip 源(可选):pip 装包慢可配国内源:pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple。
4. 第三幕:创建 learn-langchain 环境 + 装包
4.1 建环境
4.2 装包(本系列全套)
注意:langchain 主包是”空壳”,真正干活的是各集成包。按需装,别一把梭。
5. 数据字典:包版本一览(本机实测,2026-08)
为什么拆:LangChain 0.x 时代一个大包装所有东西,升级一个组件整个包跟着动。1.x 拆成”核心定义接口 + 集成包实现具体服务”。你只用智谱就只装 langchain-anthropic。
6. .env:密钥和模型配置不进代码
.env 放在项目根目录(已被 .gitignore 排除),密钥永远不进 .py 文件:
验证 .env 生效:python -c "from dotenv import load_dotenv; load_dotenv(); import os; print(os.environ.get('ZHIPU_MODEL'))"——能打印出glm-4.7就说明读到了。
7. 数据文件(RAG 的”原料”)
8. 弃用包避坑(看到就绕道)
下表全部经本机实测验证(2026-08),langchain主包 1.3.14 已不再包含llms/chains/vectorstores这些旧模块——用 0.x 写法会直接ModuleNotFoundError。
识别方法:pip show <包>看维护状态;import 时报ModuleNotFoundError的 0.x 写法直接绕道。2024 年之前的教程 90% 是旧的,看到langchain_community/langchain.chains/from langchain.llms别照着抄。 为什么 langgraph 装着却不用:langchain主包把langgraph列为硬依赖(1.x 设计如此),所以pip install langchain就自动装上。但”装了”≠“必须用”——本系列刻意不用它的 API(图编排),全部用 LCEL 管道完成,少学一个框架、少踩一类坑。
9. 验证 ①:环境检查脚本
配套代码code/00_env_check.py——打印所有关键包版本 + 数据文件 + .env 变量名(不含值),全绿就说明环境 OK。
10. 验证 ②:第一个可运行示例(原始函数调用版,不用 |)
环境检查过了,但你还没”看到” LangChain 干活。这段示例刻意不用第 09 篇的 | 管道——用最原始的函数调用看清每一步:模板拼消息 → 模型返回 AIMessage → 解析器剥壳 → 历史滚雪球。全程打印完整 JSON 数据字典。
配套代码 code/00_env_setup.py:
11. 边界
- 没激活环境 →
import langchain直接 ModuleNotFoundError。看终端提示符是(learn-langchain)才算激活。 - 装错环境 → 没激活就
pip install,可能装进 base。先激活再装。 - 忘记
conda init+ 重启终端 →conda activate不生效。新终端提示符没有(base),conda activate报错。重跑conda init powershell再完全重启终端。 - 安装时没勾 “Add to PATH” →
where.exe conda报”找不到”,但 conda 已装好。手动把D:\lib\miniconda3、...\Scripts、...\condabin加进用户 PATH(或直接用开始菜单的 Anaconda Prompt),不用重装。 load_dotenv()找不到 .env → 它不是”只读当前目录”,而是从调用者 .py 文件所在目录逐级向上搜索.env(实测:在code/子目录跑也能读到项目根的 .env)。搜不到的场景:调用文件与 .env 不在同一棵目录树(如从C:\Windows跑)→ 返回False、变量为空。稳妥做法:load_dotenv(PROJECT_ROOT / ".env")显式传绝对路径(本系列 code/ 里都是这么写的)。- 密钥写进代码 → 泄漏风险。
.env必须被.gitignore排除。
推荐资料(延伸阅读)
- LangChain 官方文档 · 安装指南 —— 官方支持的安装方式与包拆分
- LangChain 官方文档 · 快速开始 —— 官方起步教程,第一段对话
- 智谱开放平台 —— 本教程使用的模型厂商,密钥与 API 文档入口