【问题标题】:How do I properly install httplib2 on Google App Engine?如何在 Google App Engine 上正确安装 httplib2?
【发布时间】:2011-08-26 01:24:55
【问题描述】:

我将 httplib2 目录复制到我的 GAE 项目中,现在我收到以下错误:

line 64, in <module> _ssl_wrap_socket = ssl.wrap_socket

这是 Google App Engine 的问题,还是我的 httplib2 安装不正确?

完整的错误转储,作为请求(它很大!):

--> --> -->
Traceback (most recent call last):
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 4053, in _HandleRequest
    self._Dispatch(dispatcher, self.rfile, outfile, env_dict)
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 3977, in _Dispatch
    base_env_dict=env_dict)
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 588, in Dispatch
    base_env_dict=base_env_dict)
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 3050, in Dispatch
    self._module_dict)
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 2954, in ExecuteCGI
    reset_modules = exec_script(handler_path, cgi_path, hook)
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 2834, in ExecuteOrImportScript
    exec module_code in script_module.__dict__
  File "C:\Users\quaunaut\Documents\Aptana Studio 3 Workspace\qushoutout\src\main.py", line 25, in <module>
    import twitter as twitter
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 1505, in Decorate
    return func(self, *args, **kwargs)
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 2450, in load_module
    return self.FindAndLoadModule(submodule, fullname, search_path)
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 1505, in Decorate
    return func(self, *args, **kwargs)
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 2339, in FindAndLoadModule
    description)
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 1505, in Decorate
    return func(self, *args, **kwargs)
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 2282, in LoadModuleRestricted
    description)
  File "C:\Users\quaunaut\Documents\Aptana Studio 3 Workspace\qushoutout\src\twitter.py", line 65, in <module>
    import oauth2 as oauth
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 1505, in Decorate
    return func(self, *args, **kwargs)
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 2450, in load_module
    return self.FindAndLoadModule(submodule, fullname, search_path)
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 1505, in Decorate
    return func(self, *args, **kwargs)
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 2339, in FindAndLoadModule
    description)
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 1505, in Decorate
    return func(self, *args, **kwargs)
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 2282, in LoadModuleRestricted
    description)
  File "C:\Users\quaunaut\Documents\Aptana Studio 3 Workspace\qushoutout\src\oauth2\__init__.py", line 32, in <module>
    import httplib2
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 1505, in Decorate
    return func(self, *args, **kwargs)
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 2450, in load_module
    return self.FindAndLoadModule(submodule, fullname, search_path)
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 1505, in Decorate
    return func(self, *args, **kwargs)
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 2339, in FindAndLoadModule
    description)
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 1505, in Decorate
    return func(self, *args, **kwargs)
  File "C:\Program Files (x86)\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 2282, in LoadModuleRestricted
    description)
  File "C:\Users\quaunaut\Documents\Aptana Studio 3 Workspace\qushoutout\src\httplib2\__init__.py", line 64, in <module>
    _ssl_wrap_socket = ssl.wrap_socket
AttributeError: 'module' object has no attribute 'wrap_socket'

还是有这个问题。关于我能想到的唯一可能导致这种情况的原因是我的机器运行 Python 2.7;是否有可能导致问题?

【问题讨论】:

  • 你能显示完整的错误转储吗?

标签: python google-app-engine httplib2


【解决方案1】:

Blog 声称修复了 GAE 问题。我还没有尝试过,但听起来不错。

【讨论】:

    【解决方案2】:

    作为一种解决方法:

    您可以使用 Google App Engine SDK 1.4.3(这看起来像 1.5.0 回归)。

    或者在 httplib.FakeSocket 上强制 httplib2 回退:

    import sys
    sys.modules['ssl'] = None
    import httplib2
    

    那里已经填写了一个新问题: http://code.google.com/p/googleappengine/issues/detail?id=5064

    它看起来已经在 httplib2 端修复了: http://code.google.com/p/httplib2/source/detail?r=cf721c1693a68e9438899be3d78acccae6ab0e30#

    【讨论】:

      【解决方案3】:

      AppEngine 沙箱不允许访问套接字 API,要让 http 库在 GAE 上运行,它必须包装 urllib(反过来包装 url_fetch API)。

      EDIT 看起来 httplib2 应该 可以工作,所以我猜你只需要确保你的路径设置正确。

      this question

      【讨论】:

      • 如何确保路径设置正确?我猜我必须做一个符号链接,但我不知道如何在 Windows 机器上做到这一点。
      • 您是否为您的 Python 安装了 SSL 支持(只需尝试来自 python repl 的import ssl?您是否将您的文件命名为 ssl.py?
      • @Chris Farmiloe 我的所有文件都没有称为 ssl.py,并且在解释器中导入 ssl 可以正常工作。
      • @quaunaut 不要做任何特别的事情——不要在你的应用程序中安装 httplib2,也不要更改路径。它应该已经可以正常工作了。
      • @Nick Johnson 那么请告诉我如何解决我的错误?因为它肯定行不通。
      猜你喜欢
      • 1970-01-01
      • 2021-01-07
      • 2013-02-11
      • 2016-05-23
      • 2018-04-29
      • 1970-01-01
      • 1970-01-01
      • 2018-02-10
      • 2018-08-01
      相关资源
      最近更新 更多