You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Google Cloud Functions中加载spaCy模型失败,本地运行正常

Google Cloud Functions中spaCy模型查找问题的解决方案

问题概述

本地运行正常的spaCy实体识别代码,部署到Google Cloud Functions后出现以下错误:

OSError: [E050] Can't find model 'en_core_web_sm'. It doesn't seem to be a Python package or a valid path to a data directory.

核心原因是Google Cloud Functions的运行环境中,spaCy模型的安装路径或加载逻辑与本地环境存在差异。

Google Cloud Functions中spaCy模型的存储路径

当通过pip安装官方spaCy模型(如en_core_web_sm)时,模型会被部署到函数的虚拟环境site-packages目录下,具体路径格式为:

/env/lib/python<版本号>/site-packages/en_core_web_sm

例如,若函数使用Python 3.9,路径即为/env/lib/python3.9/site-packages/en_core_web_sm。spaCy默认会扫描该目录查找模型,但如果模型未正确安装,就会触发找不到路径的错误。

具体解决方法

方法1:通过requirements.txt安装模型包

这是最简便的标准方案,直接在函数项目的requirements.txt中添加spaCy和模型的依赖:

spacy>=3.0.0
en_core_web_sm==3.6.0

注意:模型版本需与spaCy版本兼容,可确认两者版本匹配关系后调整。

部署时,Google Cloud Functions会自动将模型安装到上述site-packages路径,代码中保持原有spacy.load("en_core_web_sm")即可正常加载。

方法2:手动指定模型绝对路径

如果方法1出现异常,可在代码中直接指定模型的绝对路径(需匹配函数使用的Python版本):

import spacy

def entities():
    # 替换为函数对应的Python版本路径
    NER = spacy.load("/env/lib/python3.9/site-packages/en_core_web_sm")
    text='Looking for a Recruiting Data Analyst who can follow written instructions to correctly identify qualifying attributes from a candidates profile, load and properly code candidates in our recruiting database/CRM'
    text_entities= NER(text)
    entity_vector=[[word.text,word.label_] for word in text_entities.ents]

    print('Function finished')

entities()

方法3:打包模型到部署包

若无法通过pip安装模型(如自定义模型),可将模型文件夹直接放入项目根目录,部署时随代码一同上传,代码中使用相对路径加载:

import spacy

def entities():
    # 模型文件夹位于项目根目录
    NER = spacy.load("./en_core_web_sm")
    # 后续代码不变

替代方案:直接导入模型包

若尝试过直接导入en_core_web_sm,需确保requirements.txt已包含该包,然后改用以下加载方式:

import en_core_web_sm

def entities():
    NER = en_core_web_sm.load()
    # 后续代码不变

内容的提问来源于stack exchange,提问作者Ivan Cereghetti

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 00:47:26