Problemas de configuración con django y mod_wsgi

Tengo problemas para que django funcione en apache 2.2 con mod_wsgi. Django está instalado y mod_wsgi también. Incluso puedo ver una página 404 al acceder a la ruta y puedo iniciar sesión en django admin. Pero si quiero instalar el módulo de etiquetado obtengo el siguiente error:

Traceback (most recent call last): File "setup.py", line 49, in  version_tuple = __import__('tagging').VERSION File "/home/jim/django-tagging/tagging/__init__.py", line 3, in  from tagging.managers import ModelTaggedItemManager, TagDescriptor File "/home/jim/django-tagging/tagging/managers.py", line 5, in  from django.contrib.contenttypes.models import ContentType File "/usr/lib/python2.5/site-packages/django/contrib/contenttypes/models.py", line 1, in  from django.db import models File "/usr/lib/python2.5/site-packages/django/db/__init__.py", line 10, in  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 

Mi httpd.conf:

  Alias /media/ /home/jim/django/mysite/media/  Order deny,allow Allow from all  Alias /admin/media/ "/usr/lib/python2.5/site-packages/django/contrib/admin/media/"  Order allow,deny Allow from all  WSGIScriptAlias /dj /home/jim/django/mysite/apache/django.wsgi  Order deny,allow Allow from all  

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

Intento hacer que esto funcione desde hace unos días y he leído varios blogs y respuestas aquí, así que nada funcionó.

Editar:

Ahora lo probé con esta publicación de blog y mi archivo wsgi ahora se ve así:

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

admin sigue funcionando, pero recibo el mismo error cuando bash instalar el módulo de etiquetado.

Primero,

  • Dado que su administrador funciona, la configuración con wsgi es buena. No te molestes en cambiarlo / editarlo.

Para asegurarse de que no sea un problema de configuración de Apache / mod-wsgi, puede ejecutar el servidor de desarrollo desde la máquina de producción

 python manage.py runserver 0:8080 

Luego apunta tu navegador a

 http://yoursite.com:8080/ 

Debes ver exactamente el mismo comportamiento.

Entonces,

Para depurar este problema:

  • En el shell de Python en su servidor, intente import tagging . Claramente, desde su rastreo, el import tagging está generando un error y, por eso, la configuración no se puede importar.

  • Luego, simplemente elimine el paquete que contiene el etiquetado y realice una instalación nueva con el siguiente comando, que sabe cómo instalar paquetes, también.

.

 sudo pip install django-tagging 

¿Has leído la publicación del blog de Graham Dumpleton sobre Django y WSGI ? Hace un buen trabajo al describir algunos problemas comunes de configuración, y específicamente toca mysite.settings vs. settings .

ACTUALIZACIÓN: Por favor, lea los excelentes comentarios de Graham Dumpleton a continuación.

ACTUALIZACIÓN 2: Como lo han señalado tanto Graham como el ser gurú, el problema no está en absoluto en WSGI. En su lugar, es un problema con la instalación de django-tagging . Sigue los consejos de becomingGuru y usa pip para instalar django-tagging .