Django和mod_wsgi的配置问题

2024-03-29 15:13:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我在让django使用mod-wsgi开发apache 2.2时遇到了问题。 Django已安装,mod_wsgi也已安装。 我甚至可以在访问路径时看到404页面,并且可以登录到django admin。 但是如果我想安装标记模块,我会得到以下错误:

 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()

管理员仍在工作,但当我尝试安装标记模块时,也出现了同样的错误。


Tags: djangoinpyimportwsgihomesettingslib
2条回答

首先

  • 由于您的管理员工作,wsgi的设置是好的。不用费心修改/编辑它。

为了确保这不是Apache/mod wsgi设置问题,可以从生产机器运行开发服务器

python manage.py runserver 0:8080

然后将浏览器指向

http://yoursite.com:8080/

你必须看到完全相同的行为。

那么

要调试此问题:

  • 在服务器上的python shell上,尝试import tagging。显然,从您的回溯来看,import tagging是它引发错误的地方,这就是为什么不能导入设置。

  • 然后,只需删除包含标记的包,然后使用下面的命令重新安装,该命令知道如何安装包。

是的。

sudo pip install django-tagging

你读过格雷厄姆·邓普尔顿的blog post on Django and WSGI吗?它很好地描述了一些常见的配置问题,并特别涉及了mysite.settingssettings之间的比较。

更新:请阅读以下格雷厄姆·邓普尔顿的精彩评论。

更新2:正如Graham和becomingGuru都指出的,问题根本不在于WSGI。而是安装django-tagging时出现问题。按照becomingGuru的建议,使用pip安装django-tagging

相关问题 更多 >