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

Python2.7 App Engine:vendor.add无法为dev_appserver.py暴露依赖

问题:App Engine Python2.7本地开发环境无法导入google.cloud.storage

背景

  • 正在迁移基于Python2.7 + Ubuntu18.04的遗留项目,后续计划升级至Python3.10、Ubuntu22.04及Flask
  • 从项目根目录的vendored依赖切换为requirements.txt管理,已移除根目录下的依赖文件,requirements.txt中包含google-cloud-storage==1.44.0

已执行操作

  1. 执行以下命令将依赖安装到项目根目录的lib文件夹:
    venv-2-7/bin/python -m pip install -t lib -r requirements.txt
    
  2. 在app.yaml同级目录创建appengine_config.py,内容如下:
    # From https://cloud.google.com/appengine/docs/legacy/standard/python/tools/using-libraries-python-27
    import os
    
    from google.appengine.ext import vendor
    
    vendor.add('lib')
    vendor.add(os.path.join(os.path.dirname(os.path.realpath(__file__)), 'lib'))
    

问题现象

  • 本地直接测试导入成功:
    venv-2-7/bin/python -c 'import google.cloud.storage'
    
  • 启动本地开发服务器时(PyCharm或手动执行均失败):
    venv-2-7/bin/python /google-cloud-sdk/platform/google_appengine/dev_appserver.py --host 127.0.0.1 .
    
    抛出错误:
    ImportError: No module named google.cloud.storage
    

补充app.yaml配置

runtime: python27
api_version: 1
threadsafe: yes

instance_class: F4
automatic_scaling:
  min_idle_instances: automatic
    
handlers:
- url: /1/account.*
  script: api_account.app

inbound_services:
- warmup

libraries: # Also tried removing this section entirely
- name: webapp2
  version: latest
- name: jinja2
  version: latest
- name: ssl
  version: latest

env_variables:
  PYTHONHTTPSVERIFY: 1

skip_files:
- ^(.*/)?.*\.py[co]$

已尝试的解决方案(单独或组合使用)

import os
import sys

import pkg_resources
import google

if os.environ.get("GOOGLE_CLOUD_SDK_APPENGINE"):
    sys.path.insert(0, os.environ["GOOGLE_CLOUD_SDK_APPENGINE"])

for lib_dir in os.path.join(os.path.dirname(__file__), 'lib'), 'lib':
    sys.path.insert(0, lib_dir)
    google.__path__.append(os.path.join(lib_dir, 'google'))
    pkg_resources.working_set.add_entry(lib_dir)

import google.cloud.storage

疑惑点

  • 使用from google.appengine.ext import vendor是否有特殊配置技巧?
  • GOOGLE_CLOUD_SDK_APPENGINE环境变量设置为/google-cloud-sdk/platform/google_appengine是否正确?
  • 尝试内联google.appengine.ext.vendor并循环调用时,出现新错误:ImportError: No module named google.cloud._helpers

请求解决该导入错误问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 06:22:06