我很难让couchdbkit在Google App Engine上正常运行。我要么没有正确导入我的库,要么与GAE's Python Sandbox rules发生冲突。任何人都知道在GAE上使用couchdbkit时是否需要包含restkit(这是一些问题的来源)?
这是我的配置:
的app.yaml
zapdome.py
couchdbkit /
restkit /
我已将zapdome.py剥离为基础(连接到我的CouchDB数据库服务器):
#! /usr/bin/env python
import urllib, httplib, datetime
from couchdbkit.schema.base import *
from couchdbkit.schema.properties import *
from couchdbkit.client import Server
USERNAME = ''
PASSWORD = ''
class QuoteEntry(Document):
name = StringProperty()
symbol = StringProperty()
price = StringProperty()
server = Server('https://' + USERNAME + ':' + PASSWORD + '@' + USERNAME + '.cloudant.com/')
这些是我正在记录的错误:
E 2011-05-05 20:39:31.309
Traceback (most recent call last):
E 2011-05-05 20:39:31.309
File "/base/data/home/apps/zapdome/1.350215157753999092/restkit/__init__.py", line 12, in <module>
E 2011-05-05 20:39:31.309
from .client import Client, MAX_FOLLOW_REDIRECTS
E 2011-05-05 20:39:31.309
File "/base/data/home/apps/zapdome/1.350215157753999092/restkit/client.py", line 21, in <module>
E 2011-05-05 20:39:31.309
from httplib import FakeSocket
E 2011-05-05 20:39:31.309
ImportError: cannot import name FakeSocket
E 2011-05-05 20:39:31.309
Traceback (most recent call last):
E 2011-05-05 20:39:31.309
File "/base/data/home/apps/zapdome/1.350215157753999092/couchdbkit/__init__.py", line 10, in <module>
E 2011-05-05 20:39:31.310
from .resource import RequestFailed, CouchdbResource
E 2011-05-05 20:39:31.310
File "/base/data/home/apps/zapdome/1.350215157753999092/couchdbkit/resource.py", line 25, in <module>
E 2011-05-05 20:39:31.310
from restkit import Resource, ClientResponse
E 2011-05-05 20:39:31.310
ImportError: cannot import name Resource
E 2011-05-05 20:39:31.310
<type 'exceptions.SyntaxError'>: 'import *' not allowed with 'from .' (__init__.py, line 159)
Traceback (most recent call last):
File "/base/data/home/apps/zapdome/1.350215157753999092/zapdome.py", line 4, in <module>
from couchdbkit.schema.base import *
由于它在httplib.FakeSocket和restkit.Resource上窒息,我开始认为我超出了GAE允许的范围。有人有什么想法?感谢。
答案 0 :(得分:1)
我不想回答我自己的问题,但似乎我试图在GAE's Python Sandbox的范围之外做事。我认为插件的问题很突出。 Cloudant的优秀人员向我指出this Quora answer为Python / Django提供了更自由的托管选项。
顺便说一句,我和WebFaction一起去了,一小时内一切正常,我绝对不是系统管理员(但他们不提供免费托管解决方案)。答案 1 :(得分:0)
在这种情况下,问题看起来是导入语法而不是沙盒规则。这是抱怨,因为你正在从base执行import *,然后尝试从.resource导入。在Python 2.5中不允许使用import *和相对模块路径。
您可以尝试更改导入*以仅导入您实际需要的内容,例如文献