當我的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()
你是什麼操作系統? – 2013-05-09 02:53:15
CentOS版本6.4 – user1037122 2013-05-09 03:45:48