Linode部署Flask应用报错:找不到langchain.chains.question_answering模块
问题:Flask应用部署Linode时LangChain导入错误
环境差异
- 本地:Python 3.10.6,测试运行正常
- Linode服务器:Python 3.7.3,LangChain版本0.0.27
导入代码
from flask import Flask, render_template, request import openai import pinecone import json from langchain.embeddings.openai import OpenAIEmbeddings from langchain.chains.question_answering import load_qa_chain from langchain.llms import OpenAI from langchain.vectorstores import Pinecone import os
运行错误
ModuleNotFoundError: No module named 'langchain.chains.question_answering'
已尝试操作
- 更新Python与LangChain
- 重启服务器
- 重建服务器
- 删除虚拟环境并重装LangChain和Python
虚拟环境依赖列表
pip list Package Version ------------------ --------- aiohttp 3.8.5 aiosignal 1.3.1 annotated-types 0.5.0 async-timeout 4.0.2 asynctest 0.13.0 attrs 23.1.0 certifi 2023.7.22 charset-normalizer 3.2.0 click 8.1.6 dnspython 2.3.0 Flask 2.2.5 frozenlist 1.3.3 greenlet 2.0.2 gunicorn 21.2.0 idna 3.4 importlib-metadata 6.7.0 itsdangerous 2.1.2 Jinja2 3.1.2 langchain 0.0.27 loguru 0.7.0 MarkupSafe 2.1.3 multidict 6.0.4 numpy 1.21.6 openai 0.27.8 packaging 23.1 pinecone-client 2.2.1 pip 23.2.1 pkg_resources 0.0.0 pydantic 1.10.9 pydantic_core 2.3.0 python-dateutil 2.8.2 PyYAML 6.0.1 requests 2.31.0 setuptools 68.0.0 six 1.16.0 SQLAlchemy 2.0.19 tqdm 4.65.0 typing_extensions 4.7.1 urllib3 2.0.4 Werkzeug 2.2.3 yarl 1.9.2 zipp 3.15.0
解决方案
- 适配LangChain旧版本导入路径
LangChain 0.0.27版本中,load_qa_chain的导入路径与新版本不同,将导入语句修改为:
# 替换原导入行 from langchain.chains import load_qa_chain
若需要带来源的QA链,可尝试:
from langchain.chains.qa_with_sources import load_qa_chain
- 升级服务器Python版本
Python 3.7.3已停止维护,对新版LangChain支持有限,建议升级到3.8+(如本地的3.10版本):
- 编译安装Python 3.10到Linode服务器(避免覆盖系统默认Python)
- 基于Python 3.10创建新的虚拟环境
- 重新安装所有依赖,匹配本地使用的LangChain版本
- 确认虚拟环境激活状态
运行Flask前,通过以下命令确认当前使用的Python环境是否为目标虚拟环境:
which python python --version
确保输出的版本和路径与虚拟环境一致。
内容的提问来源于stack exchange,提问作者LadyOlvira
相关产品推荐
相关产品推荐

