2009-11-30 75 views
0

我試圖在Windows上安裝django 1.1應用程序引擎。django應用程序與Windows上的應用程序引擎

當啓動應用程序引擎,我發現了以下錯誤: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

您可以發佈您settings.py?看來你的DATABASE_ENGINE設置被設置爲GAE不支持的sqlite。 – 2009-11-30 10:35:03

回答

-1

的Django 1.1是不是在App Engine上的默認版本,在使用代替0.96或指定要使用1.1。見this article on goodle code

對於這個問題,模型需要適應,因爲App Engine沒有常規(sql)數據庫。這也在給定的鏈接上描述。

+0

不正確:請參閱http://code.google.com/appengine/docs/python/tools/libraries.html#Django – 2009-11-30 10:27:07

+0

這很有趣,我在App Engine上使用Django 1.1而不是Django的模型。 – 2009-11-30 15:17:38

+0

你說得對。它*被*支持,但你必須指定它。我會改變答案。 – extraneon 2009-11-30 15:56:55

0

爲什麼你需要django.db?你打算如何使用它?我的猜測是Django正在搜索sqlite並且無法找到它?也許如果你安裝它,錯誤會消失。

2

正如其他人所指出的,您不能在AppEngine上使用Django的ORM。然而,很明顯,您正在按照一些說明導入django.db以斷開某些信號。錯誤消息顯示您的問題:系統上未安裝sqlite3庫。

通常這與Python版本2.5一起,所以你應該把它作爲你的2.6安裝的一部分,但也許你有一個最小安裝出於某種原因。嘗試從python.org或ActiveState安裝其中一個完整的Python版本,或者您可以嘗試安裝pysqlite2庫。

+0

您可以導入數據庫,但必須調整模型。我認爲谷歌可能已經做了一些神奇的數據庫模塊。 – extraneon 2009-11-30 10:24:20

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 main.py在GAE上的項目和他們很好地工作:

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() 
相關問題