2009-06-07 25 views
6

Tratando de conseguir Django para trabajar con Apache, y yo estoy recibiendo el siguiente error:Mod_python error: ImportError: No se pudo importar la configuración

ImportError: Could not import settings 'MyDjangoApp.settings' (Is it on sys.path? Does it have syntax errors?): No module named MyDjangoApp.settings

Mi Django aplicación se encuentra en/home/usuario/django/MyDjangoApp/

Mi sección Ubicación httpd.conf se parece a:

<Location "/MyDjangoApp/"> 
    SetHandler python-program 
    PythonHandler django.core.handlers.modpython 
    SetEnv DJANGO_SETTINGS_MODULE MKSearch.settings 
    PythonOption django.root /MyDjangoApp 
    PythonPath "['/home/user/django/MyDjangoApp/','/var/www'] + sys.path" 
    PythonDebug On 
</Location> 

Por favor, dígame cómo corregir la sección de localización para hacer el trabajo de Django?

Respuesta

11

Creo que mod_python está buscando configuraciones en el módulo MKSearch que no existe al lado del directorio/home/user/django/MyDjangoApp. Trate de añadir el directorio padre de la directiva PYTHONPATH de la siguiente manera:

<Location "/MyDjangoApp/"> 
    SetHandler python-program 
    PythonHandler django.core.handlers.modpython 
    SetEnv DJANGO_SETTINGS_MODULE MKSearch.settings 
    PythonOption django.root /MyDjangoApp 
    PythonPath "['/home/user/django/', '/home/user/django/MyDjangoApp,'/var/www'] + sys.path" 
    PythonDebug On 
</Location> 

o quitar el nombre del módulo de la DJANGO_SETTINGS_MODULE env var de la siguiente manera:

<Location "/MyDjangoApp/"> 
    SetHandler python-program 
    PythonHandler django.core.handlers.modpython 
    SetEnv DJANGO_SETTINGS_MODULE settings 
    PythonOption django.root /MyDjangoApp 
    PythonPath "['/home/user/django/MyDjangoApp,'/var/www'] + sys.path" 
    PythonDebug On 
</Location> 
+0

+1 The django docs pasa por alto la diferencia entre "/ home/user/django" (que permite "desde MyDjangoApp import foo") y alternativas. –

+0

eliminando el nombre del módulo de la configuración resolvió mi problema. ¡Uf! – PhoebeB

4

dar esta respuesta para la integridad - a pesar de que su caso era diferente.

Una vez llamé a mi proyecto django test. Bueno, django estaba importando prueba de módulo python, que es un módulo para pruebas de regresión y no tiene nada que ver con mi proyecto.

Este error se producirá si python encuentra otro módulo con el mismo nombre que su proyecto django. Denomine su proyecto de una manera distinta o anteponga la ruta del directorio principal de su aplicación a sys.path.

+2

Exactamente lo que me estaba pasando. ¡Gracias! – nlaq

+0

Este fue mi problema también. Tenía un área de ensayo llamada prueba y el nombre entraba en conflicto con el paquete integrado. Esto parece bastante común que Django probablemente debería dar un mensaje de error especial para ello. –

-1

El siguiente ejemplo, ubicado en mi archivo de configuración de Apache, funciona. Me resultó muy difícil lograr que mod_python funcione a pesar de las buenas respuestas de la gente. En su mayor parte, los comentarios que recibí decían usar mod_wsgi, en lugar de mod_python.

Comentarios que he visto, incluidos los del Boston Python Meetup, todos los modelos concur_modis son más fáciles de usar. En mi caso en Red Hat EL 5 WS, cambiar de mod_python no es práctico.

<Location /> 
     SetHandler python-program 
     PythonHandler django.core.handlers.modpython 
     SetEnv DJANGO_SETTINGS_MODULE settings 
     PythonOption django.root /home/amr/django/amr 
     PythonPath "['/home/amr/django', '/home/amr/django/amr', '/usr/local/lib 
/site-packages/django'] + sys.path" 
     PythonDebug On 
</Location> 
Cuestiones relacionadas