3

我正在尝试将我一直在本地运行的应用程序移植到 GAE。该应用程序使用 Bottle.py 框架。我使用 Beaker 进行会话管理。我有点菜鸟,无法正确导入烧杯。非常感谢帮助。

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

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

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 中所有内容的权限以确保它们是可执行的。

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

    从烧杯.x 导入 y

变成:

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

2 回答 2

0

SessionMiddleware 在 middleware.py 中。尝试:

from beaker.middleware import SessionMiddleware
于 2011-08-29T00:35:32.967 回答
0

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

于 2011-09-04T16:13:55.547 回答