先把当时的情况摆出来。照着旧教程写 from langchain.chat_models import ChatOpenAI,运行报 ModuleNotFoundError,提示包已经拆分。
原因不止一个,得分开看。新版本把各厂商集成拆成了独立包。也可能是只装了核心包,没有装对应集成包。
少数情况下是导入路径仍在使用旧版写法。不容易想到的是,环境里同时存在两个大版本。
上来先安装对应集成包
pip install langchain-openai
接着改用新的导入路径
from langchain_openai import ChatOpenAI
随后确认核心包版本
python -c "import langchain;print(langchain.__version__)"
剩下的就是跑一次最小调用验证
python -c "print(ChatOpenAI(model='gpt-4o-mini').invoke('hi').content)"
白天有业务在跑,能验证的部分都压到了晚上做。
当时还开着另一个排查窗口,两边日志对照着看才定位到。
别只看报错消失,验证要多做一步。导入不再报错,最小调用能返回内容,旧代码迁移后行为保持一致。
这类拆分在近两年很频繁,遇到导入错误先去查当前版本的模块路径,比在旧教程里找答案快得多。如果同一现象隔几天又出现,说明根因没找到,别当偶发处理。