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

Google Cloud Build部署云函数时找不到依赖报错求助

问题根因

你的配置逻辑从根本上不成立,踩了Cloud Build和Cloud Functions的运行机制坑:

  • Cloud Build每一步都运行在独立的临时容器里,你在第一个python:3.9容器里装的apt包、pip依赖,会在步骤结束后随容器销毁,完全不会留存到后续步骤。
  • 执行gcloud functions deploy时,Python依赖编译、安装的动作根本不在你跑gcloud命令的容器里执行,而是在Google Cloud托管的独立云函数构建环境中完成。这个默认构建环境没有预装libpoppler-cpp-dev,编译pdftotext的C扩展时自然找不到poppler的头文件,就会抛你看到的错误。
  • 就算你把装依赖和部署命令塞到同一个Cloud Build步骤里也没用,只要调用的是gcloud functions deploy,依赖安装动作就会被扔到GCP侧的托管环境跑,感知不到你在当前容器装的任何系统包。
修复方法

直接删掉你配置里那个单独装OS依赖的步骤,完全不需要它。修改Deploy步骤的参数,给GCF的托管构建流程传入需要预装的apt包列表,让构建环境在跑pip install前先把系统依赖装好就行。
修改后的cloudbuild.yml配置如下:

steps:
  # Deploy Function      
  - name: "gcr.io/cloud-builders/gcloud"
    id: "Deploy Function"
    args:
      [ 
        "functions",
        "deploy",
        "pdf_handler",
        "--entry-point",
        "main",
        "--source",
        ".",
        "--runtime",
        "python39",
        "--memory",
        "256MB",
        "--service-account",
        "my_service_account",
        "--trigger-http",
        "--timeout",
        "540",
        "--region",
        "europe-west1",
        "--set-build-env-vars",
        "APT_PACKAGES=build-essential libpoppler-cpp-dev pkg-config python3-dev"
      ]
options:
  logging: CLOUD_LOGGING_ONLY

配置完成后,确保你项目根目录的requirements.txt里正确声明了pdftotext依赖即可,不需要提前在Cloud Build里执行pip install操作,GCF的构建流程会自动完成依赖安装。

备选方案(适配第一代云函数环境)

如果你使用的是第一代Cloud Functions运行环境,不支持通过APT_PACKAGES环境变量传入系统依赖,可以提前构建好预装了对应系统依赖的自定义构建镜像,上传到Artifact Registry后,在部署参数中追加--build-image 你的自定义构建镜像地址,指定用你自己的镜像完成依赖编译即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 20:54:19