Google Cloud函数中非main文件导入pydantic遇ModuleNotFoundError求助
问题:Google Cloud函数部署本地fork的langchain库时触发pydantic ModuleNotFoundError
我尝试在Google Cloud函数中引入本地fork的langchain库(命名为langchain_local),但部署时该库内的文件导入pydantic时触发ModuleNotFoundError。我的requirements.txt已包含pydantic>=1.9.1,main.py中直接导入pydantic无异常,但langchain_local的tools.py等非入口文件导入pydantic时报错。
相关文件及信息:
requirements.txt内容:
pinecone-client>=2.1.0 langchain>=0.0.63 pydantic>=1.9.1 SQLAlchemy>=1.4.40 requests>=2.28.2 numpy>=1.22.3
main.py关键代码:
from langchain_local.agents import Tool, AgentExecutor, ZeroShotAgent
报错触发代码(langchain_local/agents/tools.py):
from pydantic import BaseModel, root_validator
目录结构:
|langchain_local/ |---|__init__.py |---|agents/ |---|---|__init__.py |---|---|agent.py |---|---|tools.py |main.py |requirements.txt
完整报错栈:
Traceback (most recent call last): File "/layers/google.python.pip/pip/bin/functions-framework", line 8, in sys.exit(_cli()) File "/layers/google.python.pip/pip/lib/python3.8/site-packages/click/core.py", line 1128, in __call__ return self.main(*args, **kwargs) File "/layers/google.python.pip/pip/lib/python3.8/site-packages/click/core.py", line 1053, in main rv = self.invoke(ctx) File "/layers/google.python.pip/pip/lib/python3.8/site-packages/click/core.py", line 1395, in invoke return ctx.invoke(self.callback, **ctx.params) File "/layers/google.python.pip/pip/lib/python3.8/site-packages/click/core.py", line 754, in invoke return __callback(*args, **kwargs) File "/layers/google.python.pip/pip/lib/python3.8/site-packages/functions_framework/_cli.py", line 37, in _cli app = create_app(target, source, signature_type) File "/layers/google.python.pip/pip/lib/python3.8/site-packages/functions_framework/__init__.py", line 288, in create_app spec.loader.exec_module(source_module) File "", line 843, in exec_module File "", line 219, in _call_with_frames_removed File "/workspace/main.py", line 1, in from langchain_local.agents import Tool, AgentExecutor, ZeroShotAgent File "/workspace/langchain_local/__init__.py", line 5, in from langchain_local.agents import MRKLChain, ReActChain, SelfAskWithSearchChain File "/workspace/langchain_local/agents/__init__.py", line 2, in from langchain_local.agents.agent import Agent, AgentExecutor File "/workspace/langchain_local/agents/agent.py", line 8, in from langchain_local.agents.tools import Tool File "/workspace/langchain_local/agents/tools.py", line 4, in from pydantic import BaseModel, root_validator ModuleNotFoundError: No module named 'pydantic'
可能的原因及解决办法
1. 依赖安装异常或版本冲突
Google Cloud Functions部署时会在容器环境重新安装依赖,可能存在版本冲突导致pydantic未成功安装:
- 尝试将requirements.txt中的pydantic指定为具体兼容版本,比如
pydantic==1.10.12,避免模糊版本带来的兼容问题; - 部署时添加
--verbosity debug参数查看依赖安装日志,确认pydantic是否被正确安装。
2. 本地模块的Python路径问题
本地langchain_local模块的导入路径可能未被Cloud Functions的运行环境正确识别:
- 在main.py开头添加路径配置,确保本地模块所在目录被加入Python路径:
import sys from pathlib import Path sys.path.append(str(Path(__file__).parent))
3. 运行时Python版本兼容性
报错栈显示运行环境为Python3.8,虽然pydantic>=1.9.1支持Python3.8,但可尝试更换Cloud Functions的Python运行时版本(如3.9或3.10),排查是否存在隐藏的版本兼容问题。
4. 依赖安装顺序影响
langchain本身依赖pydantic,可能因安装顺序导致版本冲突:
- 将
pydantic>=1.9.1移至requirements.txt的最顶部,确保优先安装pydantic。
内容的提问来源于stack exchange,提问作者Owen Burns
相关产品推荐
相关产品推荐

