我正在尝试在Windows上安装带有django 1.1的应用引擎。
启动应用引擎时,我收到以下错误:http://slexy.org/view/s21oLrbkHh
我所做的步骤是: 1.)通过启动器创建新的应用程序 2.)复制我的代码(这是空的django项目)
我的main.py代码附在下面。 我正在排队:“import django.db”,我可以从cmd成功完成。
你知道吗?main.py:
\# main.py
import os, sys
os.environ["DJANGO\_SETTINGS\_MODULE"] = "taskhood.settings"
sys.path.append("/home/brox/tmp/mashname")
\# Google App Engine imports.
from google.appengine.ext.webapp import util
\# Django version
from google.appengine.dist import use_library
use_library('django', '1.1')
\# Force Django to reload its settings.
from django.conf import settings
settings._target = None
import django.core.handlers.wsgi
import django.core.signals
import django.db
import django.dispatch.dispatcher
def log_exception(*args, **kwds):
logging.exception('Exception in request:')
\# Log errors.
django.dispatch.Signal.connect(
django.core.signals.got_request_exception,
log_exception)
\# Unregister the rollback event handler.
django.dispatch.Signal.disconnect(
django.core.signals.got_request_exception,
django.db._rollback_on_exception)
def main():
# Create a Django application for WSGI.
application = django.core.handlers.wsgi.WSGIHandler()
# Run the WSGI CGI handler with that application.
util.run_wsgi_app(application)
if __name__ == "__main__":
main()
答案 0 :(得分:2)
正如其他人所说,你不能在AppEngine上使用Django的ORM。但是很明显,您正在按照一些指示导入django.db
以断开某些信号。该错误消息显示您的问题:您的系统上未安装sqlite3库。
通常这与Python 2.5版本一起提供,所以你应该将它作为2.6安装的一部分,但也许你出于某种原因需要进行最小的安装。尝试从python.org或ActiveState安装一个完整的Python版本,或者你可以尝试安装pysqlite2库。
答案 1 :(得分:0)
你为什么需要django.db?你打算如何使用它?我的猜测是Django正在搜索sqlite而它无法找到它?也许如果你安装它就会出错。
答案 2 :(得分:0)
确保settings.py
中的数据库配置为空:
DATABASE_ENGINE = ''
DATABASE_NAME = ''
DATABASE_USER = ''
DATABASE_PASSWORD = ''
DATABASE_HOST = ''
DATABASE_PORT = ''
以下内容:
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
)
INSTALLED_APPS = (
'django.contrib.contenttypes',
'django.contrib.sites',
)
以上是在GAE上运行Django减去其管理员的最低要求。
我在两个不同的Django GAE项目中使用了以下main.py
,它们运行良好:
import logging, os, sys
from google.appengine.dist import use_library
use_library('django', '1.1')
# Must set this env var *before* importing any part of Django
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
# Google App Engine imports.
from google.appengine.ext.webapp import util
# Remove the standard version of Django.
for k in [k for k in sys.modules if k.startswith('django')]:
del sys.modules[k]
# Force sys.path to have our own directory first, in case we want to import
# from it.
sys.path.insert(0, os.path.abspath(os.path.dirname(__file__)))
import django.core.handlers.wsgi
import django.db
def main():
# Create a Django application for WSGI.
application = django.core.handlers.wsgi.WSGIHandler()
# Run the WSGI CGI handler with that application.
util.run_wsgi_app(application)
if __name__ == '__main__':
main()
答案 3 :(得分:-1)
Django 1.1不是App Engine上的默认版本,而是使用0.96或指定要使用1.1。请参阅this article on goodle code。
就此而言,需要调整模型,因为App Engine没有常规(sql)数据库。这也在给定的链接上描述。