Google App Engine上的Pyramid 1.2导致导入错误

时间:2011-09-30 22:09:15

标签: python google-app-engine pylons pyramid

我正按照概述here的步骤尝试在GAE上运行金字塔。开发服务器上的一切正常,但部署到Google的服务器时,会出现以下错误:

<type 'exceptions.ImportError'>: cannot import name BaseRequest
Traceback (most recent call last):
  File "/base/data/home/apps/.../0-0-1.353634463095353211/main.py", line 9, in <module>
    from pyramid.config import Configurator
  File "/base/data/home/apps/.../0-0-1.353634463095353211/lib/dist/pyramid/__init__.py", line 1, in <module>
    from pyramid.request import Request
  File "/base/data/home/apps/.../0-0-1.353634463095353211/lib/dist/pyramid/request.py", line 6, in <module>
    from webob import BaseRequest

这可能是因为GAE使用WebOb 0.9而Pyramid使用WebOb 1.1(它位于我的项目中lib/dist/webob下),因为0.9中缺少BaseRequest

main.py文件中有这个片段:

sys.path.insert(0,'lib/dist')

但它似乎只对dev服务器案例有帮助。我有办法强制GAE运行时使用我的应用程序中包含的1.1版本吗?

2 个答案:

答案 0 :(得分:1)

这本身并不是一个真正的解决方案,但我们即将发布新的Python运行时Python 2.7,其中包括更新版本的库,包括webob 1.1。也许您可以针对该应用程序定位您的应用程序,而不是针对2.5运行时?

答案 1 :(得分:1)

除了运行时更新,我发现了另一种解决方法。我已将WebOb 1.1模块从webob重命名为webobx,并将金字塔引用为重命名的webobx模块。不是很优雅,如果我升级金字塔就必须重复,但是有效。