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

本地Python虚拟环境AppEnginePlatformError:URLFetch不可用求助

解决AppEnginePlatformError: URLFetch is not available in this environment

这个问题我之前排查过好几次,核心原因就是你的本地环境被错误地识别成了Google App Engine(GAE)环境,导致requests/urllib3自动启用了仅在GAE上可用的URLFetch适配器,但本地根本没有这个服务,所以抛出了错误。下面是具体的排查和解决步骤:

1. 检查代码中是否主动启用了App Engine适配器

先看看你的代码里有没有类似这样的片段:

from requests_toolbelt.adapters import appengine
session = requests.Session()
session.mount('https://', appengine.AppEngineAdapter())

如果有,这就是问题所在——这段代码是专门给GAE环境用的,本地运行时必须注释掉,或者加个环境判断,比如只在GAE部署时才启用:

import os
import requests
from requests_toolbelt.adapters import appengine

session = requests.Session()
# 仅在GAE环境下使用AppEngineAdapter
if os.environ.get('GAE_ENV') == 'standard':
    session.mount('https://', appengine.AppEngineAdapter())
else:
    # 本地使用默认适配器
    pass

2. 禁用urllib3的App Engine自动适配

有时候urllib3会自动检测环境并启用GAE适配,哪怕你没主动写相关代码。可以在代码最开头加入以下语句强制禁用:

import urllib3
# 关闭App Engine的自动monkey patch
urllib3.contrib.appengine.disable_appengine_monkeypatch()

3. 重置requests的适配器

如果上面的方法没用,直接重置requests会话的适配器,强制使用标准HTTP客户端:

import requests

session = requests.Session()
# 移除所有可能存在的适配(包括AppEngineAdapter)
for protocol in ['http://', 'https://']:
    session.adapters.pop(protocol, None)
# 重新挂载默认的HTTP适配器
session.mount('http://', requests.adapters.HTTPAdapter())
session.mount('https://', requests.adapters.HTTPAdapter())

4. 排查环境变量和依赖

  • 检查本地有没有误设置GAE_ENV、GOOGLE_CLOUD_PROJECT这类GAE相关的环境变量,有的话清空它们。
  • 尝试更新依赖包,旧版本的requests-toolbelt或urllib3可能有环境检测的bug:
pip install --upgrade requests-toolbelt urllib3
  • 如果你的虚拟环境是从GAE环境拷贝过来的,建议直接新建一个干净的虚拟环境,重新安装依赖,避免残留的配置干扰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:18:45