Python2转Python3遇memcache断言错误,能否沿用google.appengine.ext?
Python 2转Python 3迁移问题解答
1. google.appengine.ext在Python 3中的使用说明
Python 3环境下的Google App Engine(GAE)已切换至第二代运行时,不再支持Python 2时代的google.appengine.ext旧版API。以你用到的ndb为例:
- 需使用官方适配新版环境的
google-cloud-ndb库替代,安装命令:pip install google-cloud-ndb - 导入语句需改为:
from google.cloud import ndb,而非原有的from google.appengine.ext import ndb
旧版google.appengine.ext依赖GAE第一代运行时的沙箱环境,Python 3的GAE运行时已移除该机制,因此无法直接沿用Python 2的写法。
2. API Proxy是什么?
API Proxy是GAE第一代运行时的核心组件,作用是:
- 作为应用代码与GAE底层服务(如memcache、datastore、任务队列等)的中间层
- 处理应用对这些服务的调用请求,转发至GAE后端服务并返回结果
你遇到的AssertionError: No API proxy found for service "memcache"错误,本质是Python 3环境已移除旧版API Proxy机制,但你的代码仍依赖旧版ndb,它会尝试调用memcache服务的API Proxy,自然找不到对应组件。
3. 解决当前错误的步骤
- 替换旧版
ndb为google-cloud-ndb库 - 修改所有
from google.appengine.ext import ndb的导入语句为from google.cloud import ndb - 确保
model.Base类基于新版ndb.Model实现 - 若代码中还有其他依赖
google.appengine.ext的模块(如memcache),需替换为对应Google Cloud客户端库(如google-cloud-memcache)
内容的提问来源于stack exchange,提问作者ffejrekaburb
相关产品推荐
相关产品推荐

