Langchain与Pydantic兼容问题:导入RecursiveCharacterTextSplitter报错
解决方案:TypeError: ForwardRef._evaluate() missing 'recursive_guard' 参数
这个错误本质是Python 3.12与Pydantic v1的兼容性问题:Python 3.10+的typing.ForwardRef._evaluate方法新增了recursive_guard必填参数,但旧版Pydantic v1的代码未传入该参数,导致调用失败。以下是可直接落地的解决方法:
方法1:降级Python到3.11
Pydantic v1对Python 3.11有完美支持,且Langchain全版本兼容3.11:
- 卸载Python 3.12,安装Python 3.11.x版本
- 创建新的虚拟环境并激活
- 安装依赖:
pip install langchain pydantic==1.10.14
方法2:安装兼容Python 3.12的Pydantic v1补丁版
Pydantic v1.10.15修复了Python 3.12的ForwardRef问题,直接升级到该版本即可:
pip install --upgrade pydantic==1.10.15
之后重新安装对应Langchain版本(推荐0.1.x系列):
pip install langchain==0.1.10
方法3:切换到Pydantic v2 + 新版Langchain
Langchain 0.1.x及以上版本原生支持Pydantic v2,完全适配Python 3.12:
pip install --upgrade langchain pydantic>=2.0
若代码中存在依赖Pydantic v1 API的部分,可通过兼容层导入:
from pydantic import v1 as pydantic_v1 # 示例:替换旧的Pydantic导入 # from pydantic import BaseModel → from pydantic.v1 import BaseModel
额外排查步骤
- 确保使用虚拟环境,避免全局Python包的依赖冲突
- 执行
pip list检查是否存在多个Pydantic版本,若有则卸载多余版本:pip uninstall -y pydantic pydantic-core pip install pydantic==[你选择的版本]
内容的提问来源于stack exchange,提问作者Ruchika Gupta
相关产品推荐
相关产品推荐

