0

我正在尝试在 Google App Engine 上托管 Django 应用程序,因此我正在使用Django nonrel并按照这些说明进行操作。现在,试图让Python 社交身份验证工作,我遇到了两个问题。

首先,当使用与 Python social 中的示例 Django 配置非常相似的代码时,尝试从正在运行的服务器加载 url,我得到这个:

Traceback (most recent call last):
  File "/home/pablo/scripts/google_appengine/google/appengine/tools/dev_appserver.py", line 2989, in _HandleRequest
    self._Dispatch(dispatcher, self.rfile, outfile, env_dict)
  File "/home/pablo/scripts/google_appengine/google/appengine/tools/dev_appserver.py", line 2832, in _Dispatch
    request_file = open(request_file_name, 'wb')
  File "/home/pablo/scripts/google_appengine/google/appengine/dev_appserver_import_hook.py", line 605, in __init__
    raise IOError('invalid mode: %s' % mode)
IOError: invalid mode: wb

在某处,该应用程序正在尝试创建 App Engine 不允许的本地文件,但我很困惑,因为这是来自 App Engine 的代码。有谁知道这可能来自哪里?

其次,当我尝试在服务器上访问 root 时,我收到以下错误:

... [many lines elided]
  File "/home/pablo/scripts/google_appengine/google/appengine/tools/dev_appserver_import_hook.py", line 692, in Decorate
    return func(self, *args, **kwargs)
  File "/home/pablo/scripts/google_appengine/google/appengine/tools/dev_appserver_import_hook.py", line 1642, in FindAndLoadModule
    description)
  File "/home/pablo/scripts/google_appengine/google/appengine/tools/dev_appserver_import_hook.py", line 692, in Decorate
    return func(self, *args, **kwargs)
  File "/home/pablo/scripts/google_appengine/google/appengine/tools/dev_appserver_import_hook.py", line 1589, in LoadModuleRestricted
    description)
  File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 42, in <module>
    raise ImportError, str(msg) + ', please install the python-tk package'
ImportError: No module named _tkinter, please install the python-tk package

在某个地方,Django 正在尝试使用python-tkfor Tkinter,但据我了解,python-tk 是一个 GUI 库。它是如何到达这里的,我怎样才能摆脱任何需要它的代码?

作为参考,这是我在urls.py访问正在运行的服务器时尝试的域调用的函数(并出现这些错误):

def home(request):
    """Home view, displays login mechanism"""
    if request.user.is_authenticated():
        return redirect('done')
    return render_to_response('home.html', {
        'plus_id': getattr(settings, 'SOCIAL_AUTH_GOOGLE_PLUS_KEY', None)
    }, RequestContext(request))

任何帮助将不胜感激——我对 Django 和 Python 还是很陌生,我很想从这个开始:D

4

1 回答 1

0

Google App Engine 上的 Python 的行为有点不同,正如您在本地文件中已经意识到的那样。需要特殊处理的另一件事是 3rd 方库,为了使它们可用,应该正确处理它们。

在许多情况下,即使您要将这些库包含到您的 GAE 应用程序中,它们也可能使用了生产中不支持的东西,因此整个事情都无法正常工作。

于 2014-01-19T02:13:22.030 回答