GAE 支持 Python 2.7 也有段时间了, 考虑到 2.7 加入了很多有意思的东西, 其中一些特性是先在 Python 3 里面出现, 然后移到 2.7 里面来的, 如
- 有序字典 (而非默认的散列字典) 类型, 如
collections.OrderedDict({ 1: 'abc', 2: 'def' })
- 集合类型字面常量, 如
{ 1, 2, 3 }
(以前版本写作 set([1, 2, 3])
) - 字典及集合类型的推导式 (这么翻译准确么? Set / dictionary comprehensions), 如
{ x: x * x for x in range(5) }
要简单地将运行时环境切换到 Python 2.7 版本, 需要修改 app.yaml 为如下形式
application: YOUR APP ID
version: YOUR APP VERSION
runtime: python27
threadsafe: false
api_version: 1
此外需要修改应用程序启动代码, 类似如下方式
from google.appengine.ext import webapp
from google.appengine.ext.webapp import template
import wsgiref.handlers
import webapp2
class Index(webapp.RequestHandler):
def get(self):
print 'Hello'
if __name__ == '__main__':
application = webapp2.WSGIApplication([
('/', Index),
], debug=True)
wsgiref.handlers.CGIHandler().run(application)
使用 2.7 版本的另一个好处是 GAE 上为 2.7 版本提供了很多库支持, 包括 jinja (这样就可以摆脱 django 模板了 :-). 如果需要引用 jinja2 库最近版本, 需要在 app.yaml 中加入以下内容
application: YOUR APP ID
version: YOUR APP VERSION
runtime: python27
threadsafe: false
api_version: 1
handlers:
- url: /.*
script: main.py
libraries:
- name: jinja2
version: latest
libraries 下面还可以附上其它想要使用的库. 在此处可以查看所有 Python 2.7 运行时所支持的库.