Windows 本地应用程序引擎用法:oauth2client ImportError

2024-02-05

我正在使用 App Engine Standard 开发 Python 后端服务,在某个时候,我告诉自己:

“嘿,为什么不尝试在使用远程数据存储时在本地运行服务器”

我可以在本地运行此代码,但我无法弄清楚为什么 remote_api_stub 会抛出错误:

“文件”C:\Program Files (x86)\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\google\appengine\ext\remote_api\remote_api_stub.py", 第 1003 行,在ConfigureRemoteApiForOAuth 'oauth2client 模块:%s' % e)

ImportError:使用 OAuth 凭据需要 oauth2client 模块:没有名为 oauth2client 的模块”

尽管根据 pip,我已经安装了 oauth2client (当我运行时我看到pip install --upgrade oauth2client

预先感谢您的帮助

EDIT:

我的问题不是重复的导入错误:没有名为 oauth2client 的模块 https://stackoverflow.com/questions/35663508/importerror-no-module-named-oauth2client。我确实在 lib 文件夹中安装了 google api 客户端,并确保“appengine_config.py”文件位于其位置并包含必要的行。

它仍然没有解决我的问题,所以我将提供更多详细信息!

这是我的 main.py (负责 GAE 的默认服务)或者至少是它的脱脂版本:

import os
import datetime
import dev_appserver

from google.appengine.ext.remote_api import remote_api_stub
from google.appengine.api import apiproxy_stub_map

dev_appserver.fix_sys_path()
local_urlfetch_stub = apiproxy_stub_map.apiproxy.GetStub('urlfetch')

def configure_remote_api_dev_safe (host):
  if not os.getenv('SERVER_SOFTWARE', '').startswith('Google App Engine/'):
    logging.info("running on local server")
    remote_api_stub.ConfigureRemoteApiForOAuth(host, '/_ah/remote_api')
    apiproxy_stub_map.apiproxy.ReplaceStub('urlfetch', local_urlfetch_stub)
  else:
    logging.info("running on remote server")

def configure_remote_api_dev_unsafe (host):
  if not os.getenv('SERVER_SOFTWARE', '').startswith('Google App Engine/'):
    remote_api_stub.ConfigureRemoteApiForOAuth(host, '/_ah/remote_api')
  else:
    logging.info("running on remote server")


class Main(webapp2.RequestHandler):

  def post(self):
    configure_remote_api_dev_safe ('{}.appspot.com'.format(app))
    test = Test(createdAt=datetime.datetime.utcnow())
    test.put()
    self.response.write("done")


app = ndb.toplevel(webapp2.WSGIApplication({('/', Main)}, debug=True))

当我请求默认服务时出现此错误:

PATH_TO_PROJECT_FOLDER>dev_appserver.py PATH_TO_PROJECT_FOLDER
INFO     2018-07-20 10:45:17,740 devappserver2.py:178] Skipping SDK update check.
INFO     2018-07-20 10:45:18,117 api_server.py:274] Starting API server at: http://localhost:53725
INFO     2018-07-20 10:45:18,151 dispatcher.py:270] Starting module "default" running at: http://localhost:8080
INFO     2018-07-20 10:45:18,153 admin_server.py:152] Starting admin server at: http://localhost:8000
INFO     2018-07-20 10:46:57,006 instance.py:294] Instance PID: 5940

WARNING  2018-07-20 08:46:57,565 sandbox.py:1086] The module _winreg is whitelisted for local dev only. If your application relies on _winreg, it is likely that it will not function properly in production.
INFO     2018-07-20 08:46:57,757 main.py:35] running on local server
ERROR    2018-07-20 08:46:57,760 webapp2.py:1528] Use of OAuth credentials requires the oauth2client module: No module named oauth2client
Traceback (most recent call last):
File "SDK_PATH\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\lib\webapp2-2.3\webapp2.py", line 1511, in __call__
rv = self.handle_exception(request, response, e)
File "SDK_PATH\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\lib\webapp2-2.3\webapp2.py", line 1505, in __call__
rv = self.router.dispatch(request, response)
File "SDK_PATH\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\lib\webapp2-2.3\webapp2.py", line 1253, in default_dispatcher
return route.handler_adapter(request, response)
File "SDK_PATH\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\lib\webapp2-2.3\webapp2.py", line 1077, in __call__
return handler.dispatch()
File "SDK_PATH\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\lib\webapp2-2.3\webapp2.py", line 547, in dispatch
return self.handle_exception(e, self.app.debug)
File "SDK_PATH\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\lib\webapp2-2.3\webapp2.py", line 545, in dispatch
return method(*args, **kwargs)
File "PATH_TO_PROJECT_FOLDER\main.py", line 125, in post
configure_remote_api_dev_safe ('{}.appspot.com'.format(app))
File "PATH_TO_PROJECT_FOLDER\main.py", line 38, in configure_remote_api_dev_safe'/_ah/remote_api')
File "SDK_PATH\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\google\appengine\ext\remote_api\remote_api_stub.py", line 1003, in ConfigureRemoteApiForOAuth 'oauth2client module: %s' % e)
ImportError: Use of OAuth credentials requires the oauth2client module: No module named oauth2client
ERROR    2018-07-20 08:46:57,765 wsgi.py:279]
Traceback (most recent call last):
File "SDK_PATH\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\google\appengine\runtime\wsgi.py", line 267, in Handle
result = handler(dict(self._environ), self._StartResponse)
File "SDK_PATH\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\google\appengine\ext\ndb\tasklets.py", line 1108, in add_context_wrapper
return synctaskletfunc(*args, **kwds)
File "SDK_PATH\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\google\appengine\ext\ndb\tasklets.py", line 1087, in synctasklet_wrapper
return taskletfunc(*args, **kwds).get_result()
File "SDK_PATH\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\google\appengine\ext\ndb\tasklets.py", line 1057, in tasklet_wrapper
result = func(*args, **kwds)
File "SDK_PATH\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\lib\webapp2-2.3\webapp2.py", line 1519, in __call__
response = self._internal_error(e)
File "SDK_PATH\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\lib\webapp2-2.3\webapp2.py", line 1511, in __call__
rv = self.handle_exception(request, response, e)
File "SDK_PATH\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\lib\webapp2-2.3\webapp2.py", line 1505, in __call__
rv = self.router.dispatch(request, response)
File "SDK_PATH\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\lib\webapp2-2.3\webapp2.py", line 1253, in default_dispatcher
return route.handler_adapter(request, response)
File "SDK_PATH\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\lib\webapp2-2.3\webapp2.py", line 1077, in __call__
return handler.dispatch()
File "SDK_PATH\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\lib\webapp2-2.3\webapp2.py", line 547, in dispatch
return self.handle_exception(e, self.app.debug)
File "SDK_PATH\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\lib\webapp2-2.3\webapp2.py", line 545, in dispatch
return method(*args, **kwargs)
File "PATH_TO_PROJECT_FOLDER\main.py", line 125, in post
configure_remote_api_dev_safe ('{}.appspot.com'.format(app))
File "PATH_TO_PROJECT_FOLDER\main.py", line 38, in configure_remote_api_dev_safe '/_ah/remote_api')
File "SDK_PATH\Google\Cloud SDK\google-cloud-sdk\platform\google_appengine\google\appengine\ext\remote_api\remote_api_stub.py", line 1003, in ConfigureRemoteApiForOAuth 'oauth2client module: %s' % e)
ImportError: Use of OAuth credentials requires the oauth2client module: No module named oauth2client
INFO     2018-07-20 10:46:57,782 module.py:880] default: "POST / HTTP/1.1" 500 -

我希望这更具解释性。再次预先感谢您的帮助!

解决方案:(感谢@Dan Cornilescu)

=> 永远不要忘记“import dev_appserver”和对“dev_appserver.fix_sys_path()”的调用

由于代码版本控制(一个糟糕的选择),我一开始就失去了它们,而我认为我一切都是对的。

然而我还没有完成,我面临着一个新问题,我将在一个新问题中输入该问题,因为它与这个问题的原因无关(我希望在某个时候不会丢失任何其他内容)。 [如果您对新一期感到好奇,就在这儿 https://stackoverflow.com/questions/51443921/local-standard-app-engine-py-fails-auth-with-remote-datastore]


将相关评论转换为答案。

您显示的代码片段似乎缺少这个显然需要的设置部分在本地客户端中使用远程 API https://cloud.google.com/appengine/docs/standard/python/tools/remoteapi#using_the_remote_api_in_a_local_client例子:

try:
    import dev_appserver
    dev_appserver.fix_sys_path()
except ImportError:
    print('Please make sure the App Engine SDK is in your PYTHONPATH.')
    raise
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Windows 本地应用程序引擎用法:oauth2client ImportError 的相关文章

  • TypeError:无法使用抽象方法实例化抽象类 <...>

    这是我的代码 from abc import ABC from abc import abstractmethod class Mamifiero ABC docstring for Mamifiero def init self self
  • 如何使用SQLAlchemy实现内连接?

    如何使用 SQLAlchemy 实现内连接 我正在尝试进行简单的聊天 class Base object def tablename self return self name lower id Column Integer primary
  • 如何在Google AppEngine上设置环境变量?

    我正在尝试在谷歌应用程序引擎上设置和使用环境变量 我的 app yaml 文件如下所示 但是 当我使用 os Getenv mytoken 时 我得到一个空字符串 而不是我设置的实际值 是GAE的bug吗 api version go1 h
  • 打印 scrapy 请求的“响应”

    我正在尝试学习 scrapy 在遵循教程的同时 我正在尝试进行细微的调整 我想简单地从请求中获取响应内容 然后我会将响应传递到教程代码中 但我无法发出请求并获取响应内容 建议就好 from scrapy http import Respon
  • App Engine 的 Google Cloud Storage 身份验证

    我们希望开始使用 Google Cloud Storage 作为用户上传文件的持久存储 不幸的是 我无法添加应用程序标识 应用程序 ID appspot gserviceaccount com 到我们的 团队 因为我们的团队基于 Googl
  • 如何忽略 NDB/DB 查询中的大小写

    这似乎是一个简单的问题 但我没有看到任何内容类定义 https developers google com appengine docs python ndb queryclass hl en 如果我有疑问 Video query Vide
  • 在新式类中替换 __str__ [重复]

    这个问题在这里已经有答案了 我正在转换旧的 Python 代码 并用新样式的类替换一些类 问题是这破坏了替换的行为 str 我不知道为什么 class OldStyle def str self return original old Ol
  • Google App Engine 的 JDO:转义引号

    如何转义 JDO Google App Engine 中的查询参数 例如 如果变量名称可能包含单引号 形式的不安全字符 如何使下一个片段安全 PersistenceManager pm String query select from Pe
  • 使用 Python ftplib 的 FTPS - 需要会话重用

    因此 我尝试连接到 FTP 服务器以获取目录列表并下载文件 但是之后的第一个命令prot p 函数引发异常 从日志中产生这些错误 get 150 Here comes the directory listing r n resp 150 H
  • 视频文件转换/转码 Google App Engine

    我想启动一个云计算项目 其简单任务是 接收上传的视频文件 对它们进行一些转码 转换 允许用户下载 流式传输生成的文件 我刚在想ffmpeg作为集成在的外部命令行工具Java Google App engine Application 由于很
  • Google App Engine 上按 IP 地址划分流量

    我想根据一组已知 IP 地址将流量引导至不同版本的 Google App Engine 代码 例如 如果传入请求来自给定列表上的 IP 地址 则流量将定向至版本 1 如果不是 则定向至版本 2 有没有办法从管理控制台或部署配置中执行此操作
  • 如何在Python中的不同目录中写入文件?

    我正在使用 python 2 7 x 在 Linux 上工作 并且我正在通过终端运行一些 python 程序 我希望某些输出应该写入位于以下位置的文件中不同的目录比我的工作目录 所以我写了这段代码 然而 发生的事情是文件All txt正在当
  • 如何使用ctrl+c停止tornado web服务器?

    我是龙卷风网络服务器的新手 当我使用 python main tornado py 启动龙卷风网络服务器时 它正在工作 请看下面的代码 import tornado ioloop import tornado web class MainH
  • 有什么好的适用于 Google App Engine 应用程序的 AJAX 框架吗? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在尝试在我的 Google App Engine 应用程序中实现 AJAX 因此我正在寻找一个好的
  • 如何限制 Google App Engine Endpoints API 访问仅限我的 Android 应用程序?

    我是一名 Android 开发人员 为我的应用程序构建了我的第一个 Google App Engine java 后端 除了我的应用程序之外 我不希望其他任何人访问此 API 我计划使用 App 引擎来验证我的 Android 应用程序中的
  • 如何在 Numpy 中实现垃圾收集

    我有一个名为main py 它引用另一个文件Optimisers py它仅具有功能并用于for循环进入main py 这些函数都有不同的优化功能 This Optimisers py然后引用另外两个类似的文件 其中也只有函数 它们位于whi
  • 为什么 Google Cloud Platform App Engine 上的“上次修改时间”不正确?

    我在 Google Cloud Platform App Engine 上多次部署了我的网络 使用设置如下 app yaml runtime nodejs10 当我在本地主机上测试它时 一切都工作正常 但是当我将它部署到谷歌云平台时 响应头
  • 如何指定一个变量作为类或类实例的成员变量?

    在最新的 Python 2 7 x 中 给定类定义内的任何成员变量 该成员变量是否始终处于类级别 因为它是由该类的所有实例共享的单个变量 在类的定义中 如何指定 类定义中的哪些成员变量属于该类 因此由该类的所有实例共享 以及 哪些属于该类的
  • 类型错误:translate() 只接受一个参数(给定 2 个参数)[重复]

    这个问题在这里已经有答案了 我的代码在 python 2 x 版本上运行良好 但是当我尝试在 python 3 x 版本上运行它时 出现错误 主题 需要缩写短信编码中的任何消息 Code def sms encoding data star
  • 使用 Python 导入包含文本和数字数据的文件

    I have a txt file which has text data and numerical data The first two rows of the file have essential information in te

随机推荐

  • 将道具从孙子传递给父母

    我有以下 React js 应用程序结构
  • PS7.1 - 如何将管道链与自定义函数一起使用?

    根据文档 PS 7 引入了管道链运算符 例如 and https learn microsoft com en us powershell module microsoft powershell core about about pipel
  • 如何绕过Python中的Mechanize“AmbiguityError”

    我正在尝试通过填写 Web 表单并请求 POST 将图像上传到 ImageBam 我对 urllib2 httplib 多部分的东西不太了解 我正在尝试使用 MECHANIZE 模块 但我认为它不应该太复杂 因为它只是一个网络表单 我会填写
  • C2440 无法在 C++ WinApi 中将 LRESULT 转换为 WNDPROC

    我正在尝试使用 WinApi 编写这个 win32 程序 但我陷入了困境 因为我正在遵循的教程似乎有问题 主窗口 h class MainWindow public MainWindow HINSTANCE MainWindow void
  • 屏蔽掉c中不需要的位

    给定小数71744474在二进制中它是0100010001101011101111011010我试图从这个十进制中提取的是从低位开始的每七位 这七个位中的每一个都代表一个可打印的 ASCII 字符 该字符只能有 7 位 我总共拉出了四个角色
  • 如何为 PHPUnit 测试创建内存数据库?

    我是 PHPUnit 以及一般单元测试 的新手 我想要开发一个测试套件 开发人员可以在本地运行 但也可以在我们的集成系统 Codeship 中运行 我知道可以使用内存数据库 但似乎依赖于我们没有使用的迁移 似乎不能很好地处理视图 存储过程
  • 使用 Mono Touch 在循环中使用 CGImage.ScreenImage 时出现内存问题

    我正在尝试创建一个应用程序来使用 Monotouch 和 Zxing 的 C 端口读取 QR 码 但遇到了内存问题 当应用程序处理捕获的屏幕帧时 应用程序会收到内存警告 然后关闭 我删除了对 Zxing 的调用 以追踪内存问题的根源 并且只
  • 如何去除视频的绿色背景,使其透明?

    我有一个video https youtu be XfHJ57XIb4具有绿色背景 我想删除这个绿色部分 色度键 https wikipedia org wiki Chroma key 使其透明 然后将视频显示在网站背景上 我只能找到使用图
  • 文本颜色在 Material-UI 主题中不起作用

    使用 Material UI 创建颜色主题时 我将对比度文本设置为白色 fff 它适用于具有原色的按钮 但不适用于次要颜色 尝试了如下所述的覆盖 Material UI 无法更改主题中的按钮文本颜色 https stackoverflow
  • TOOLCHAIN_HOST_TASK 与 TOOLCHAIN_TARGET_TASK

    我很抱歉问了一个天真的问题 我无法理解这些 Yocto 变量之间的区别 手册说 TOOLCHAIN HOST TASK 列出构成主机部分的包 SDK 即在SDKMACHINE上运行的部分 当你使用bitbake时 c populate sd
  • 一个循环遍历多个 Lua 表

    是否可以使用同一个循环遍历多个 Lua 表 为了循环索引表 我可以这样做 local t1 a b c local t2 d e f local num t1 t2 for i 1 num do local j local val if i
  • 使用 jQuery 将 HTML 插入 iFrame Body 标记

    我正在使用托管 CMS 它在另一个 iFrame 中呈现一个 iFrame 这些 iFrame 是从同一域加载的 但由于这是托管 CMS 我无法直接访问这些 iFrame 是否可以使用 jQuery 将 HTML 内容插入到bodyiFra
  • 跳到一行并阅读它

    我必须处理大文件 许多 GB 并且需要快速查找以根据请求检索特定行 这个想法是维护一个映射 some key gt byte location 其中字节位置表示该行在文件中的起始位置 编辑 问题稍微改变了 首先我使用 FileInputSt
  • 在Delphi中加密/解密文本文件?

    您好 我想知道文本文件加密和解密的最佳加密技术 我的场景 我的软件有两种类型的用户 管理员和操作员 我们的要求是当管理员使用GUI输入数据并保存时加密文本文件 该加密文件将作为操作员的输入 他们只需选择它并使用该文件 当操作员选择这些文件时
  • 登录时自动运行 Bash 脚本

    我编写了一个脚本 它将登录者的日期和用户名发送到日志文件中 以记录登录者的记录 我想知道如何设置此脚本在用户登录时自动执行 而不是在用户登录时自动执行在终端中手动运行它 注意 用户名是当前登录的用户 my code bin bash pri
  • Xcode 可以在代码中使用“文件夹引用”吗?

    和许多人一样 我希望 Xcode 使用反映磁盘上文件夹结构的文件夹结构 但是 我无法将 文件夹引用 青色文件夹 中的代码显示在 编译源 下的项目目标中 有什么办法可以做到这一点吗 我什至设法将青色文件夹添加到 编译源 构建阶段 但这不会导致
  • 如何用 C++ 创建 OpenOffice 文档 [重复]

    这个问题在这里已经有答案了 可能的重复 从 C 创建 打开和打印 Word 文件 https stackoverflow com questions 145573 creating opening and printing a word f
  • 捕获 pygraphviz 图像渲染而不保存到文件?

    pygraphviz 是否允许您将图像渲染到变量 我想通过网页提供动态图像 而无需将图形渲染到磁盘 根据到源代码 https github com pygraphviz pygraphviz blob 1f7f314530080c152a4
  • 从Python中的国家/地区代码获取电话号码的国际前缀

    是否可以使用python 电话号码 https github com daviddrysdale python phonenumbers或另一个 python 库 用于从两个字母的国家 地区代码中获取国家 地区调用代码 ISO 3166 1
  • Windows 本地应用程序引擎用法:oauth2client ImportError

    我正在使用 App Engine Standard 开发 Python 后端服务 在某个时候 我告诉自己 嘿 为什么不尝试在使用远程数据存储时在本地运行服务器 我可以在本地运行此代码 但我无法弄清楚为什么 remote api stub 会