Linux SDK升级后的“ImportError:没有名为webapp2的模块”(1.9.35 - > 1.9.38)

时间:2016-06-10 18:41:29

标签: python google-app-engine

将我的GAE Python Linux SDK从版本1.9.35升级到1.9.38后,我的应用程序停止工作,所有请求都以类似的方式失败:

ERROR    2016-06-10 17:55:06,100 wsgi.py:263] 
Traceback (most recent call last):
  File "/usr/local/google_appengine/google/appengine/runtime/wsgi.py", line 240, in Handle
    handler = _config_handle.add_wsgi_middleware(self._LoadHandler())
  File "/usr/local/google_appengine/google/appengine/runtime/wsgi.py", line 299, in _LoadHandler
    handler, path, err = LoadObject(self._handler)
  File "/usr/local/google_appengine/google/appengine/runtime/wsgi.py", line 85, in LoadObject
    obj = __import__(path[0])
  File "/home/dancorn/src/apartsw/main/main.py", line 9, in <module>
    import webapp2
ImportError: No module named webapp2
INFO     2016-06-10 17:55:06,102 module.py:788] default: "GET / HTTP/1.1" 500 -

我首先想到我以某种方式搞砸了我的PyCharm配置,但只是简单地回滚到1.9.35(通过将我的/usr/local/google_appengine符号链接指向相应的SDK版本dir)让事情恢复正常。

SDK release notes似乎没有表明任何相关内容。

我找到了a similar report,但建议的修复(回滚)在路上并不是真的可以接受。

我也发现了这篇文章,但我没有安装protobuf(明确):How to solve a webapp2 import error after upgrading Google App Engine launcher?。仍在咀嚼相关帖子,这导致我在SDK中可能相关的delta,我将在下面调查:

diff google_appengine_1.9.35/_python_runtime.py google_appengine_1.9.38/_python_runtime.py
71a72,75
>   if 'google' in sys.modules:
>     google_path = os.path.join(os.path.dirname(__file__), 'google')
>     google_module = sys.modules['google']
>     google_module.__path__.append(google_path)
74,77c78
< 
< 
<   if 'google' in sys.modules:
<     del sys.modules['google']
---
>     google_module.__file__ = google_path

还有其他调查结果吗?

1 个答案:

答案 0 :(得分:2)

更新:此问题已在SDK版本1.9.40中修复。

Google已经知道这个问题,在1.9.37中引入:

根据Jon Parrot的报告主题:

  

感谢大家报道此事。我们已经重现了这个问题   修复即将到来。它不会出现在下一个SDK版本(38)中,但很有可能   将在39或40。

在修复发布之前,可以找到早期未受影响的SDK版本(如1.9.36){。{3}}。