在Windows上将Django与应用程序引擎一起使用时出错
我正在尝试在Windows上安装带有Django 1.1的Google应用程序引擎 启动应用程序引擎时,我遇到以下错误: 我采取的步骤是:在Windows上将Django与应用程序引擎一起使用时出错,django,google-app-engine,installation,Django,Google App Engine,Installation,我正在尝试在Windows上安装带有Django 1.1的Google应用程序引擎 启动应用程序引擎时,我遇到以下错误: 我采取的步骤是: 通过启动器创建新应用程序 复制我的代码(这是空的Django项目) 我的main.py代码附在下面。 我正在上线:“importdjango.db”,我可以从cmd成功地完成它 你有什么想法吗 main.py: \# main.py import os, sys os.environ["DJANGO\_SETTINGS\_MODULE"] = "taskh
\# 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()
Django 1.1不是App Engine上的默认版本,请使用0.96代替,或者指定要使用1.1。看
因此,需要对模型进行调整,因为AppEngine没有常规(sql)数据库。这在给定的链接中也有描述。为什么需要django.db?你打算如何使用它?我猜Django正在搜索sqlite,但它无法找到它?如果您安装了它,可能会出错。正如其他人所指出的,您不能在AppEngine上使用Django的ORM。但是,很明显,您正在按照一些说明导入
django.db
,以便断开某些信号。错误消息显示问题:系统上未安装sqlite3库
通常这是Python 2.5版之后的版本,因此您应该将其作为2.6版安装的一部分,但出于某种原因,您可能需要进行最低限度的安装。请尝试从Python.org或ActiveState安装一个完整的Python版本,或者您可以尝试只安装pysqlite2库。请确保
设置.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的最小值减去它的admin
我在GAE项目上的两个不同Django中使用了以下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()
您可以导入db,但必须调整模型。我认为谷歌可能在db模块上做了一些魔术。不是真的:看,这很有趣,我在AppEngine上使用Django 1.1减去Django的模型。你是对的。它是受支持的,但您必须指定它。我会更改答案。你能发布你的设置吗?您的数据库引擎设置似乎设置为sqlite,这在GAE上不受支持。