让烧杯与GAE一起工作

时间:2011-08-29 00:02:03

标签: python google-app-engine bottle beaker

我正在尝试将我在本地运行的应用移植到GAE。该应用程序使用Bottle.py框架。我使用Beaker进行会话管理。我有点像菜鸟,并且无法正确进口Beaker。非常感谢。

我在Mac OS X 10.6.7下使用GoogleAppEngineLauncher.app运行移植的应用程序。这会在我的计算机上的模拟环境中运行应用程序,而不是在Google的服务器上运行。

对于我的GAE端口,我将Bottle.py放入名为“framework”的目录中。此目录有一个空的__init__.py文件。瓶子工作正常,可以服务'你好世界'。

Beaker存在于我的app(日志/烧杯)根目录中的自己的目录中。 Beaker还有一个空的__init__.py

相关代码:

from framework import bottle
from beaker import SessionMiddleware
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app

@bottle.route('/')
def index():
    return "hello, world"

def main():
    bottle.debug(True)
    run_wsgi_app(bottle.default_app())

if __name__ == '__main__':
    main()

我收到如下错误消息:

File "/Users/mscantland/code/journal/main.py", line 19, in <module>
    from beaker import SessionMiddleware
ImportError: cannot import name SessionMiddleware

到目前为止,我试图让这项工作成功:

  • 检查/ beaker中所有内容的权限,以确保它们是可执行的。

  • 按原样烧杯并重新编写所有导入语句,以便:

    来自beaker.x import y

成为:

from x import y
  • 添加了'pkg_resources.py',它不在GAE使用的Python版本的标准库中。

2 个答案:

答案 0 :(得分:0)

SessionMiddleware位于middleware.py中。尝试:

from beaker.middleware import SessionMiddleware

答案 1 :(得分:0)

我通过使用webapp和Google的用户服务重新解决问题来回答我的问题,该服务有更好的文档来处理GAE。