2012-04-09 86 views
0

我需要一些無法解析Django錯誤的幫助。Django + mod_wsgi =>「沒有模塊命名模型」錯誤

我的網站工作得很好,當我「蟒蛇manage.py runserver」,但是當我嘗試使用wsgi部署它時,它不斷髮出未知錯誤。我盡我所能去Google這些錯誤,但我無法解決它。任何人都可以告訴我的錯誤是什麼?

Apache的錯誤日誌

[error] /usr/local/lib/python2.6/dist-packages/django/middleware/csrf.py:262: DeprecationWarning: CsrfResponseMiddleware and CsrfMiddleware are deprecated; use CsrfViewMiddleware and the template tag instead (see CSRF documentation). 
[error] DeprecationWarning 
[error] [client 76.191.24.242] mod_wsgi (pid=21082): Exception occurred processing WSGI script '/srv/www/myapp/wsgi.py'. 
[error] [client 76.191.24.242] Traceback (most recent call last): 
[error] [client 76.191.24.242] File "/usr/local/lib/python2.6/dist-packages/django/core/handlers/wsgi.py", line 250, in __call__ 
[error] [client 76.191.24.242]  self.load_middleware() 
[error] [client 76.191.24.242] File "/usr/local/lib/python2.6/dist-packages/django/core/handlers/base.py", line 47, in load_middleware 
[error] [client 76.191.24.242]  raise exceptions.ImproperlyConfigured('Error importing middleware %s: "%s"' % (mw_module, e)) 
[error] [client 76.191.24.242] ImproperlyConfigured: Error importing middleware backends: "No module named models" 

wsgi.py

import os 
import sys 

sys.path.append('/srv/www') 
sys.path.append('/srv/www/myapp') 

os.environ['DJANGO_SETTINGS_MODULE'] = 'myapp.settings' 

import django.core.handlers.wsgi 
application = django.core.handlers.wsgi.WSGIHandler() 

阿帕奇

<VirtualHost *:80> 

    ServerName www.myapp.com 
    DocumentRoot /srv/www/myapp 

    RewriteEngine On 
    RewriteCond %{HTTP_HOST} !^www.myapp.com$ [NC] 
    RewriteRule ^(.*)$ http://www.myapp.com$1 [R,L] 

    Alias /static/ /srv/www/myapp/static/ 

    <Directory /srv/www/myapp> 
     Order allow,deny 
     Allow from all 
    </Directory> 

    <Directory /srv/www/myapp/static> 
     Order allow,deny 
     Allow from all 
    </Directory> 

    WSGIDaemonProcess myapp.djangoserver processes=2 threads=15 display-name=%{GROUP} 
    WSGIProcessGroup myapp.djangoserver 
    WSGIScriptAlias//srv/www/myapp/wsgi.py 

</VirtualHost> 
+0

請顯示您的「設置」和項目樹結構 – ilvar 2012-04-09 02:48:44

回答

0

該錯誤信息是,你使用Django 1.3系列,您定製的MIDDLEWARE_CLASSES通過backends.SomeClass(在某個模塊中定義了一些類,名稱爲backends) evelopment服務器在當前目錄或Python路徑中,但如果由mod_wsgi啓動則不會如此。

應該使用中間件類的全名並驗證生產服務器上是否添加了必要的Python路徑。在wsgi.py文件中最終使用sys.path.append。它看起來在開發服務器上,你添加了一些軟件包的目錄到python路徑,並且你寫了短名稱('backends'),而你應該把這個軟件包的父目錄添加到sys.path並且寫下全名。 (當然,如果你使用它:如果你使用virtualenv,請確認sys.executable是來自virtualenv目錄的python可執行文件,而不是來自普通的Python。被遺忘的virtualenv不應該通過添加路徑來修復。)

相關問題