2011-05-06 103 views
3

我很难让couchdbkit在Google App Engine上正常运行。我要么没有正确导入我的图书馆,要么我已经与GAE's Python Sandbox rules发生冲突。任何人都知道在GAE上使用couchdbkit时是否需要包含restkit(这是一些问题的来源)?在Google App Engine上使用couchdbkit(第三方库)

这里是我的配置:

的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允许的范围。任何人有任何想法?谢谢。

回答

1

我讨厌回答我自己的问题,但似乎我试图做的事情在GAE's Python Sandbox的范围之外。我认为这与套接字的问题。 Cloudant的好友指出我的this Quora answer,它为Python/Django提供了更为宽松的托管选项。

顺便说一句,我去了WebFaction,并得到了一个小时内一切正常工作,我绝对没有系统管理员(但他们不提供免费的托管解决方案)。

0

在这种情况下,问题看起来是导入语法而不是沙盒规则。这是抱怨,因为你正在从基地进行导入*,然后尝试从.resource导入。在Python 2.5中不允许使用带有相对模块路径的import *。

您可以尝试更改导入*以仅导入实际需要的内容,例如,文件。

+0

@德鲁 - 西尔斯,良好的出发点,但更改为: '进口urllib的,httplib的,日期时间 从couchdbkit.schema.base进口文件 从couchdbkit.schema.properties导入StringProperty 从couchdbkit.client导入服务器' 会产生相同的错误日志。我注意到在couchdbkit/schema/__ init__.py这里有:.properties import * 'from .base import * from .properties_proxy import *' – Ryan 2011-05-06 13:20:05