Google App引擎,django,userena,数据库设置

时间:2013-01-16 07:36:47

标签: django google-app-engine django-models django-users

我正在尝试使用GAE,Django构建一个Web应用程序。用户注册将是userena。我已经使用django-nonrel和所有设置来使第一部分工作,我正在尝试syncdb for userena。我一直在收到这个错误,请你帮我解决这个问题。

BB8265:epapyri-django$ sudo django-admin.py syncdb
Password:
Traceback (most recent call last):
  File "/usr/local/bin/django-admin.py", line 5, in <module>
    management.execute_from_command_line()
  File "/Library/Python/2.7/site-packages/django/core/management/__init__.py", line 443, in execute_from_command_line
    utility.execute()
  File "/Library/Python/2.7/site-packages/django/core/management/__init__.py", line 382, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/Library/Python/2.7/site-packages/django/core/management/__init__.py", line 261, in fetch_command
    klass = load_command_class(app_name, subcommand)
  File "/Library/Python/2.7/site-packages/django/core/management/__init__.py", line 69, in load_command_class
    module = import_module('%s.management.commands.%s' % (app_name, name))
  File "/Library/Python/2.7/site-packages/django/utils/importlib.py", line 35, in import_module
    __import__(name)
  File "/Library/Python/2.7/site-packages/django/core/management/commands/syncdb.py", line 8, in <module>
    from django.core.management.sql import custom_sql_for_model, emit_post_sync_signal
  File "/Library/Python/2.7/site-packages/django/core/management/sql.py", line 6, in <module>
    from django.db import models
  File "/Library/Python/2.7/site-packages/django/db/__init__.py", line 11, in <module>
    if DEFAULT_DB_ALIAS not in settings.DATABASES:
  File "/Library/Python/2.7/site-packages/django/utils/functional.py", line 184, in inner
    self._setup()
  File "/Library/Python/2.7/site-packages/django/conf/__init__.py", line 40, in _setup
    raise ImportError("Settings cannot be imported, because environment variable %s is undefined." % ENVIRONMENT_VARIABLE)
ImportError: Settings cannot be imported, because environment variable DJANGO_SETTINGS_MODULE is undefined.

settings.py和manage.py位于同一目录中,在添加此插件之前我没有遇到此问题。

数据库部分的settings.py如下:

# Activate django-dbindexer for the default database
DATABASES['native'] = DATABASES['default']
DATABASES['default'] = {'ENGINE': 'dbindexer', 'TARGET': 'native'}
AUTOLOAD_SITECONF = 'indexes'

INSTALLED_APPS = (
#    'django.contrib.admin',
    'django.contrib.contenttypes',
    'django.contrib.auth',
    'django.contrib.sessions',
    'djangotoolbox',
    'autoload',
    'dbindexer',
    # social_auth
    'httplib2',
    'openid',
    'oauth2',
    'social_auth',
    #userena
    'userena',
    'guardian',
    'easy_thumbnails',
    'accounts',
    # djangoappengine should come last, so it can override a few manage.py commands
    'djangoappengine',
)

这是我的runserver

BB8265:epapyri-django$ sudo django-admin.py runserver
Traceback (most recent call last):
  File "/usr/local/bin/django-admin.py", line 5, in <module>
    management.execute_from_command_line()
  File "/Library/Python/2.7/site-packages/django/core/management/__init__.py", line 443, in execute_from_command_line
    utility.execute()
  File "/Library/Python/2.7/site-packages/django/core/management/__init__.py", line 382, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/Library/Python/2.7/site-packages/django/core/management/__init__.py", line 261, in fetch_command
    klass = load_command_class(app_name, subcommand)
  File "/Library/Python/2.7/site-packages/django/core/management/__init__.py", line 69, in load_command_class
    module = import_module('%s.management.commands.%s' % (app_name, name))
  File "/Library/Python/2.7/site-packages/django/utils/importlib.py", line 35, in import_module
    __import__(name)
  File "/Library/Python/2.7/site-packages/django/core/management/commands/runserver.py", line 8, in <module>
    from django.core.servers.basehttp import AdminMediaHandler, run, WSGIServerException, get_internal_wsgi_application
  File "/Library/Python/2.7/site-packages/django/core/servers/basehttp.py", line 26, in <module>
    from django.views import static
  File "/Library/Python/2.7/site-packages/django/views/static.py", line 95, in <module>
    template_translatable = ugettext_noop(u"Index of %(directory)s")
  File "/Library/Python/2.7/site-packages/django/utils/translation/__init__.py", line 75, in gettext_noop
    return _trans.gettext_noop(message)
  File "/Library/Python/2.7/site-packages/django/utils/translation/__init__.py", line 48, in __getattr__
    if settings.USE_I18N:
  File "/Library/Python/2.7/site-packages/django/utils/functional.py", line 184, in inner
    self._setup()
  File "/Library/Python/2.7/site-packages/django/conf/__init__.py", line 40, in _setup
    raise ImportError("Settings cannot be imported, because environment variable %s is undefined." % ENVIRONMENT_VARIABLE)
ImportError: Settings cannot be imported, because environment variable DJANGO_SETTINGS_MODULE is undefined.

[编辑]

我从INSTALL_APP中删除了非django项目,将django.models导入我的accounts / MyProfile,并在.datastore上导入chmod 777,因为每次修改它都不应该请求权限。

{File "/git/ePapyri/epapyri-django/djangoappengine/db/base.py", line 160, in _value_for_db raise DatabaseError("Only strings and positive integers " django.db.utils.DatabaseError: Only strings and positive integers may be used as keys on GAE.}

2 个答案:

答案 0 :(得分:0)

为什么使用django-admin.py运行syncdb和runserver?您应该使用manage.py

你绝对不应该使用sudo来运行其中任何一个。

(还要注意你的INSTALLED_APPS似乎是胡说八道:它包含了很多普通的Python库,比如httplib2和oauth2,根本没有任何业务。)

<强>被修改

首先,您应该编辑您的问题以添加回溯。

其次,错误消息非常明确:您尚未在accounts / models.py文件中导入django.db.models

第三,在INSTALLED_APPS中包含非Django库仍然是无稽之谈。根本没有必要这样做。并且您的数据存储区不应该首先使用sudo创建 - 删除并重新创建它,或使用chmod使普通用户可以访问它。

答案 1 :(得分:0)

我发现问题是通过向GAE中的库添加PIL来解决的,而yaml文件可以解决问题,因为它在python中抱怨图像库。 django所有受支持的库的链接是https://developers.google.com/appengine/docs/python/tools/libraries27,因此将所有需要的库添加到.yaml文件和INSTALL_APP。