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

无法在Digital Ocean Functions部署Spacy/Python模块求助

解决Digital Ocean Functions部署Spacy后找不到模块的问题

1. 确认项目结构合规

Digital Ocean Functions要求每个函数必须放在单独的子目录中,requirements.txt需要和main.py放在同一函数目录下,而非项目根目录。正确的典型结构如下:

my-spacy-function/
├── packages/
│   └── my-package/
│       └── spacy-test/
│           ├── main.py
│           └── requirements.txt

如果你的requirements.txt在根目录,DO的部署工具不会识别并安装依赖。

2. 使用远程构建避免环境差异

本地环境的依赖包可能和DO Functions的运行环境(如特定Python版本、系统架构)不兼容,尤其是blis、cymem这类含C扩展的包。部署时添加--remote-build参数,让DO在云端环境中安装依赖:

doctl serverless deploy . --remote-build

3. 指定匹配的Python运行时

检查DO Functions支持的Python版本(当前支持3.8、3.9、3.10),确保本地开发版本和云端一致。在函数目录下创建function.yml文件,明确指定运行时:

runtime: python:3.9

4. 检查依赖安装日志

部署完成后,触发函数获取激活ID,然后查看详细日志,确认依赖是否真的安装成功:

# 触发函数(假设函数路径为/my-package/spacy-test)
doctl serverless functions invoke /my-package/spacy-test
# 查看日志,替换<activation-id>为返回的ID
doctl serverless activations logs <activation-id>

日志中如果有依赖安装失败的信息,针对性调整requirements.txt(比如移除pkg_resources==0.0.0这类无效依赖)。

5. 简化Spacy模型安装方式

直接在requirements.txt中引用模型whl可能存在网络问题,可改为在main.py中初始化时下载模型(注意:首次运行会耗时较长):

import spacy

def main(arg):
    # 首次运行自动下载模型
    if not spacy.util.is_package("en_core_web_sm"):
        spacy.cli.download("en_core_web_sm")
    nlp = spacy.load("en_core_web_sm")
    return {"body": 'test'}

或者提前将模型文件打包到函数目录中,配合spacy.load加载本地模型。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 17:48:30