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

在App Engine中安装Google Artifact Registry私有Python包的问题

问题核心原因

App Engine默认构建流程中,pip安装依赖的执行步骤早于所有用户自定义逻辑,keyrings.google-artifactregistry-auth即使写入requirements.txt,也会在pip需要访问私有镜像源之后才完成安装,无法提前提供认证能力,因此pip会因鉴权失败弹出用户名输入请求,触发EOF报错。


解决方案

方案1:自定义Cloud Build构建流程(推荐,无凭证泄露风险)

适配GCP原生生态,不需要硬编码任何敏感信息:

  1. 在项目根目录新建cloudbuild.yaml配置文件,内容如下:
steps:
  # 提前安装Artifact Registry认证工具
  - name: 'python:3.8' # 替换为你App Engine使用的Python版本
    entrypoint: pip
    args: ["install", "keyrings.google-artifactregistry-auth", "--user"]
  # 执行App Engine部署
  - name: 'gcr.io/cloud-builders/gcloud'
    args: ['app', 'deploy']
  1. 给Cloud Build默认服务账号授权:
    • 服务账号格式为[你的项目号]@cloudbuild.gserviceaccount.com
    • 授予角色:Artifact Registry Reader
  2. 后续部署不再直接执行gcloud app deploy,改为执行gcloud builds submit触发构建即可,构建流程会提前完成认证配置,pip可自动识别同项目Artifact Registry的访问权限完成私有包安装。

方案2:嵌入临时认证(仅适合测试,生产环境禁用)

如果仅需要快速验证功能,可以暂时把认证信息写入镜像地址:

  1. 创建具备Artifact Registry Reader权限的服务账号,下载JSON密钥文件
  2. 将服务账号JSON内容做Base64编码后,写入requirements.txt的配置:
--extra-index-url=_json_key_base64:<Base64编码后的服务账号JSON内容>@us-central1-python.pkg.dev/myproject/my-python-repo/simple/
Flask==2.0.1
my-new-package

注意:该方案会硬编码敏感凭证,存在严重泄露风险,测试完成后必须立刻删除相关凭证和配置。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 04:36:05