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
已执行操作
- 执行以下命令将依赖安装到项目根目录的
lib文件夹:venv-2-7/bin/python -m pip install -t lib -r requirements.txt - 在
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
相关产品推荐
相关产品推荐

