2009-08-01 12 views
14

La aplicación se ejecuta muy bien usar servidor interno Django sin embargo cuando utilizo + mod_python apache, recibo el error abajoDjango despliegue novato pregunta - ImportError: No se pudo importar la configuración 'configuración'


File "/usr/local/lib/python2.6/dist-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 'settings' (Is it on sys.path? Does it have syntax errors?): No module named settings 

aquí está la información necesaria

1) directorio del proyecto:/root/djangoprojects/mysite

2) lista de directorios de/root/djangoprojects/mysite

ls -ltr 
total 28 
-rw-r--r-- 1 root root 546 Aug 1 08:34 manage.py 
-rw-r--r-- 1 root root 0 Aug 1 08:34 __init__.py 
-rw-r--r-- 1 root root 136 Aug 1 08:35 __init__.pyc 
-rw-r--r-- 1 root root 2773 Aug 1 08:39 settings.py 
-rw-r--r-- 1 root root 1660 Aug 1 08:53 settings.pyc 
drwxr-xr-x 2 root root 4096 Aug 1 09:04 polls 
-rw-r--r-- 1 root root 581 Aug 1 10:06 urls.py 
-rw-r--r-- 1 root root 314 Aug 1 10:07 urls.pyc 

3) directorio de la aplicación:/root/djangoprojects/proyecto/encuestas

4) lista de directorios de/root/djangoprojects/proyecto/encuestas

ls -ltr 
total 20 
-rw-r--r-- 1 root root 514 Aug 1 08:53 tests.py 
-rw-r--r-- 1 root root 57 Aug 1 08:53 models.py 
-rw-r--r-- 1 root root 0 Aug 1 08:53 __init__.py 
-rw-r--r-- 1 root root 128 Aug 1 09:02 views.py 
-rw-r--r-- 1 root root 375 Aug 1 09:04 views.pyc 
-rw-r--r-- 1 root root 132 Aug 1 09:04 __init__.pyc 

5) en cualquier parte del sistema de archivos de importación Django ejecuta en intérprete de Python funciona bien

6) el contenido de httpd.conf

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

7) variables PYTHONPATH se establece en

echo $PYTHONPATH 
/root/djangoprojects/mysite 

8) DJANGO_SETTINGS_MODULE se establece en

echo $DJANGO_SETTINGS_MODULE 
mysite.settings 

9) el contenido de sys.path es

import sys 
>>> sys.path 
['', '/root/djangoprojects/mysite', '/usr/lib/python2.6', '/usr/lib/python2.6/plat-linux2', '/usr/lib/python2.6/lib-tk', '/usr/lib/python2.6/lib-old', '/usr/lib/python2.6/lib-dynload', '/usr/lib/python2.6/dist-packages', '/usr/local/lib/python2.6/dist-packages'] 

Cómo hacer Agregué la ubicación de las configuraciones a sys.path para que sea persistente en todas las sesiones?

He leído un montón de publicaciones con personas que tienen el mismo problema y lo he intentado mucho, lo que realmente me gana es lo que debo hacer.

Buscando ayuda.

Gracias de antemano Ankur Gupta

Respuesta

5

la configuración de Apache debe tener este aspecto:

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

Tenga en cuenta que la única diferencia es el "mysite.settings". No olvide reiniciar Apache una vez que la configuración haya cambiado (apache2ctl restart). Ver http://docs.djangoproject.com/en/dev/howto/deployment/modpython/ para más información.

+0

hizo el cambio que usted ha mencionado por lo que ahora aparece como SetHandler pitón-programa PythonHandler django.core.handlers.modpython SetEnv DJANGO_SETTINGS_MODULE mysite.settings PythonOption django.root/mysite PYTHONPATH "[ '/ root/djangoprojects /', '/ root/djangoprojects/mysite', '/ root/djangoprojects/proyecto/encuestas', '/ var/www'] + sys.path" PythonDebug En para reiniciar, hice lo siguiente /etc/init.d/apache2 restart sti no hay suerte /etc/init.d/apache2 restart –

+0

hizo que el cambio de configuración a mysite.settings sigue siendo el mismo error. –

+1

tal vez el largo PythonPath confunde a mod_python. Intente simplemente tener PythonPath "['/ root/djangoprojects /'] + sys.path" Además, asegúrese de que Apache tenga derecho a leer el archivo de configuración (permiso de lectura para otros) y toda la ruta hasta el archivo (leer y ejecuta el permiso para otros en/root,/root/djangoprojects y/root/djangoprojects/mysite). Aunque sería mejor mover todo el proyecto a una ubicación externa/raíz, después de todo, no debería estar allí. –

0

Intente cambiar a lo siguiente:

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

Uso no "/" al final de las entradas PYTHONPATH (que puede ser un problema, he tenido problemas con que por lo menos en Windows).

Las entradas '/ root/djangoprojects/mysite', '/ root/djangoprojects/mysite/polls' no son necesarias ya que se referirá a sus módulos por su nombre completo (es decir, mysite.sttings significa el módulo de configuración dentro del paquete de mysite, que es la forma correcta de acceder a él en PythonPath/root/djangoprojects).

Cuestiones relacionadas