2013-05-09 25 views
0

當我的django網站測試python manage.py runserver 0.0.0.0:8000時,沒有錯誤。Django:Manage.py runserver沒有錯誤,但mod_wsgi報告無法導入名稱連接

但是,如果我使用apache和mod_wsgi將其部署到生產環境,它將報告錯誤cannot import name connection

我發現一些其他問題,如django 1.4 database router - "cannot import name connection"建議將from django.db import connections添加到settings.py中。

但我發現加入這個導入可以防止這個錯誤,但它也會禁用數據庫路由器。

我認爲這可能是由於manage.py runserver與WSGI之間的運行環境不同所致。 這是我wsgi.py看起來像

import os 
import sys 

sys.path.insert(0,"/home/my/myweb") 
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mywebsite.settings") 

from django.core.wsgi import get_wsgi_application 

application = get_wsgi_application() 

我怎樣才能修復這個bug?

我的Python版本是2.7和Django的版本是1.4.3

編輯1:

我的操作系統是CentOS的6.4,在此服務器上:

如果我運行它使用python manage.py runserver 0.0.0.0:8000,沒有錯誤。

如果我刪除數據庫路由器,它可以在WSGI下工作。

但數據庫路由器和WSGI不能一起工作。

任何意見表示讚賞。

編輯2:

感謝@Graham鄧普爾頓,我想通了我自己。

這是爲我工作的wsgy.py。

import sys 

sys.path.insert(0, '/home/my/myweb') 

from mywebsite import settings 

import django.core.management 
django.core.management.setup_environ(settings) 
utility = django.core.management.ManagementUtility() 
command = utility.fetch_command('runserver') 

command.validate() 

import django.conf 
import django.utils 

django.utils.translation.activate(django.conf.settings.LANGUAGE_CODE) 

import django.core.handlers.wsgi 

application = django.core.handlers.wsgi.WSGIHandler() 
+0

你是什麼操作系統? – 2013-05-09 02:53:15

+0

CentOS版本6.4 – user1037122 2013-05-09 03:45:48

回答

相關問題