2010-04-06 130 views
5

我得到Django的工作在Apache 2.2與mod_wsgi的問題。 Django已安裝,mod_wsgi也已安裝。 我甚至可以在訪問路徑時看到404頁面,我可以登錄到django admin。 但是,如果我想安裝標籤模塊我得到以下錯誤:django和mod_wsgi的配置問題

Traceback (most recent call last): 
    File "setup.py", line 49, in <module> 
    version_tuple = __import__('tagging').VERSION 
    File "/home/jim/django-tagging/tagging/__init__.py", line 3, in <module> 
    from tagging.managers import ModelTaggedItemManager, TagDescriptor 
    File "/home/jim/django-tagging/tagging/managers.py", line 5, in <module> 
    from django.contrib.contenttypes.models import ContentType 
    File "/usr/lib/python2.5/site-packages/django/contrib/contenttypes/models.py", line 1, in <module> 
    from django.db import models 
    File "/usr/lib/python2.5/site-packages/django/db/__init__.py", line 10, in <module> 
    if not settings.DATABASE_ENGINE: 
    File "/usr/lib/python2.5/site-packages/django/utils/functional.py", line 269, in __getattr__ 
    self._setup() 
    File "/usr/lib/python2.5/site-packages/django/conf/__init__.py", line 40, in _setup 
    self._wrapped = Settings(settings_module) 
    File "/usr/lib/python2.5/site-packages/django/conf/__init__.py", line 75, in __init__ 
    raise ImportError, "Could not import settings '%s' (Is it on sys.path? Does it have syntax errors?): %s" % (self.SETTINGS_MODULE, e) 
ImportError: Could not import settings 'mysite.settings' (Is it on sys.path? Does it have syntax errors?): No module named mysite.settings 

我的httpd.conf:

Alias /media/ /home/jim/django/mysite/media/ 

<Directory /home/jim/django/mysite/media> 
    Order deny,allow 
    Allow from all 
</Directory> 

Alias /admin/media/ "/usr/lib/python2.5/site-packages/django/contrib/admin/media/" 

<Directory "/usr/lib/python2.5/site-packages/django/contrib/admin/media/"> 
    Order allow,deny 
    Allow from all 
</Directory> 

WSGIScriptAlias /dj /home/jim/django/mysite/apache/django.wsgi 

<Directory /home/jim/django/mysite/apache> 
    Order deny,allow 
    Allow from all 
</Directory> 

我django.wsgi:

import sys, os 

sys.path.append('/home/jim/django') 
sys.path.append('/home/jim/django/mysite') 

os.chdir('/home/jim/django/mysite') 
os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings' 

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

我試着得到這個工作幾天後,已閱讀了幾個博客和答案在這裏,但沒有任何工作。

編輯:

現在我this blog post嘗試過了,我的WSGI文件現在看起來是這樣的:

import sys 
sys.path.insert(0, '/home/jim/django/mysite') 
sys.path.insert(0, '/home/jim/django') 

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

你能告訴我們settings.py的絕對路徑嗎? – 2010-04-06 18:55:03

+0

@Ruslan Spivak /home/jim/django/mysite/settings.py – Jimbo 2010-04-06 22:14:50

回答

4

首先,

  • 因爲你的管理工作,與WSGI設置好。不要打擾改變/編輯它。

爲了確保它不是一個阿帕奇/ MOD-WSGI設置問題,您可以運行從生產機器的開發服務器

python manage.py runserver 0:8080 

那麼你的瀏覽器指向

http://yoursite.com:8080/ 

你必須看到完全一樣的行爲。

然後,

爲了調試這個問題:

  • 在您的服務器上的蟒蛇外殼,嘗試import tagging。顯然,從你的回溯中,import tagging是它引發錯誤的地方,這就是爲什麼無法導入設置。

  • 然後,只需刪除包含標記的軟件包,然後通過以下知道如何安裝軟件包的命令進行全新安裝。

sudo pip install django-tagging 
+0

進口標籤不能正常工作,甚至與開發服務器:回溯(最近通話最後一個): 文件「」,1號線,在 導入錯誤:沒有名爲標記 – Jimbo 2010-04-07 17:38:26

+1

金寶模塊:那正是我的預測。您現在可以仔細閱讀我的答案,解決您的問題! – 2010-04-08 09:45:31

+0

以前從未使用過pip,但它工作。不知道是什麼造成了這個問題。我希望它是具體的標記,以便我以後不會有與另一個包相同的問題..謝謝 – Jimbo 2010-04-08 20:59:26

4

你看過Graham Dumpleton的blog post on Django and WSGI嗎?它在描述一些常見的配置問題方面做得很好,特別涉及mysite.settingssettings

更新:請閱讀Graham Dumpleton下面的出色評論。

更新2:由於Graham和BecomeGuru都指出,問題根本不在於WSGI。它是您安裝django-tagging的問題。採取成爲導師的建議,並使用pip來安裝django-tagging

+0

希望它能解決您的具體問題。 – 2010-04-06 19:28:10

+0

仍然有同樣的問題:/ – Jimbo 2010-04-06 22:36:16

+5

然後,你可能有一個權限問題。 Apache作爲特殊用戶運行,而不是你。因此,Django站點所在的目錄以及到那時爲止的所有父目錄都必須可供Apache用戶訪問。如果您的家庭帳戶上有rwx ------,那麼Apache將無法看到您的帳戶內部。 – 2010-04-06 23:42:30