2011-04-30 20 views
12

Estoy intentando implementar mi aplicación Django en mi servidor linode con apache y mod_wsgi.Django + mod_wsgi + apache: ImportError at/No module named djproj.urls

file: /srv/www/example.com/djproj/django.wsgi

import os 
import sys 

sys.path.append('/srv/www/example.com/djproj') 

os.environ['PYTHON_EGG_CACHE'] = '/srv/www/example.com/.python-egg' 
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings' 

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

file: /etc/apache2/sites-available/example.com

/etc/apache2/sites-available/example.com 
ServerAdmin [email protected] 
ServerName example.com 
ServerAlias www.example.com 

DocumentRoot /srv/www/example.com/public_html 

WSGIScriptAlias//srv/www/example.com/djproj/django.wsgi 

<Directory "/srv/www/example.com/djproj"> 
    Order allow,deny 
    Allow from all 
</Directory> 

ErrorLog /srv/www/example.com/logs/error.log 
CustomLog /srv/www/example.com/logs/access.log combined 

Cuando visito/de mi sitio web me sale este error :

Environment: 


Request Method: GET 
Request URL: http://example.com/ 

Django Version: 1.3 
Python Version: 2.6.6 
Installed Applications: 
['django.contrib.auth', 
'django.contrib.contenttypes', 
'django.contrib.sessions', 
'django.contrib.sites', 
'django.contrib.messages', 
'django.contrib.staticfiles'] 
Installed Middleware: 
('django.middleware.common.CommonMiddleware', 
'django.contrib.sessions.middleware.SessionMiddleware', 
'django.middleware.csrf.CsrfViewMiddleware', 
'django.contrib.auth.middleware.AuthenticationMiddleware', 
'django.contrib.messages.middleware.MessageMiddleware') 


Traceback: 
File "/usr/local/lib/python2.6/dist-packages/Django-1.3- py2.6.egg/django/core/handlers/base.py" in get_response 
    101.        request.path_info) 
File "/usr/local/lib/python2.6/dist-packages/Django-1.3-py 2.6.egg/django/core/urlresolvers.py" in resolve 
    250.    for pattern in self.url_patterns: 
File "/usr/local/lib/python2.6/dist-packages/Django-1.3-py2.6.egg/django/core/urlresolvers.py" in _get_url_patterns 
    279.   patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module) 
File "/usr/local/lib/python2.6/dist-packages/Django-1.3-py2.6.egg/django/core/urlresolvers.py" in _get_urlconf_module 
    274.    self._urlconf_module = import_module(self.urlconf_name) 
File "/usr/local/lib/python2.6/dist-packages/Django-1.3-py2.6.egg/django/utils/importlib.py" in import_module 
    35.  __import__(name) 

Exception Type: ImportError at/
Exception Value: No module named djproj.urls 

No puedo hacer que funcione. Ideas?

Respuesta

23

Cambie todas las entradas de módulo/paquete e importaciones para excluir el nombre del proyecto, o ponga /srv/www/site.com en sys.path también.

+3

Este también fue mi problema. ¡¿Por qué diablos no se menciona esto en los documentos, sin embargo !!!!!!!!!! Pensé que solo debías especificar el DJANGO_SETTINGS_MODULE y django se encargaría del resto. – Sam

+0

Tenga en cuenta que la ruta debería decir "/srv/www/site.com" **, ya que eso es lo que el asker ha puesto en su pregunta **. –

1

donde tiene djproj.urls tal vez intente Es urls

32

Me segunda Ignacio de answer Vazquez-Abrams. Debe agregar la ruta a su directorio de proyecto , así como la ruta a su directorio principal a sys.path. Aquí hay un ejemplo del archivo de script WSGI que uso. Guardo el archivo dentro del directorio del proyecto.

import os 
import sys 

sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), "../../"))) 
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), "../"))) 

os.environ["DJANGO_SETTINGS_MODULE"] = "PROJECT_NAME.settings" 

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

Obteniendo una 'VariableDoble 'atrapado durante la prestación: Búsqueda fallida de la clave [0] en u' [] '' cuando se intenta insertar (o anexar)' ../../ '&' ../ 'a la ruta –

+1

Wow eres mi héroe, he estado luchando con esto por 3 horas como ahora, no pensé en mover cosas más arriba en la lista de ruta. ¡Ojalá pudiera votar más! –

+1

¡Me salvaste la vida! ¡Maldita sea! Pasé dos días buscando esta solución. ¡Gracias hombre! –

9

Seconding ayaz 'answer. Es importante que las rutas que está especificando estén al principio de la ruta de búsqueda, lo que significa que necesita usar insertar ...

Aquí está el mío. Cuando estaba haciendo un 'apéndice' recibía problemas intermitentes. Esto lo hizo sólido como una roca. Espero que esto ayude.

sys.path.insert(0, '/srv/www/Appname') 
sys.path.insert(1, '/srv/www') 
+0

Esto podría haberme salvado la vida y las horas de resolución de problemas. – Clocker

2

Lo que corrige este error para mí -

Cambio settings.py de:

ROOT_URLCONF =

Para este 'URL':

ROOT_URLCONF = 'miproyecto. urls '

+0

Esta fue una espina en mi costado también. Esta fue la causa. Tuve que buscar (egrep) todo mi sitio para averiguar de dónde estaba tratando de obtener el archivo de URL. – Furbeenator

5

prueba siguiendo este tutorial - http://singlas.in/5-step-tutorial-for-using-django-with-apache-and-mod_wsgi/

Asegúrese de agregar ambos directorios Django y Django Project Directory a la ruta del sistema. su wsgi.py debería verse como

import os,sys 

#comments 
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "django_project.settings") 
sys.path.append('/path/to/your/django/directory/django_project') 
sys.path.append('/path/to/your/django/directory') 

#comments 
from django.core.wsgi import get_wsgi_application 
application = get_wsgi_application() 
Cuestiones relacionadas