Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Windows上将Django与应用程序引擎一起使用时出错_Django_Google App Engine_Installation - Fatal编程技术网

在Windows上将Django与应用程序引擎一起使用时出错

在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

我正在尝试在Windows上安装带有Django 1.1的Google应用程序引擎

启动应用程序引擎时,我遇到以下错误:

我采取的步骤是:

  • 通过启动器创建新应用程序
  • 复制我的代码(这是空的Django项目)
  • 我的main.py代码附在下面。 我正在上线:“importdjango.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()
    

    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上不受支持。