2011-11-23 25 views
7

Tengo un proyecto de Django con una aplicación llamada subscribe. En la raíz urls.py utilizo incluir desde subscribe 's urls.py.Django uwsgi error de importación

puse a INSTALLED_APPSsubscribe y en subscribe 's urls.py utilizo subscribe.views.<name> para llamar a mis puntos de vista. Cuando el servidor se ejecuta como python manage.py runserver localmente todo funciona bien. Pero cuando el servidor se ejecuta en nginx + uwsgi con virtualenv, tengo ImportError: No module named subscribe. Cuando cambio subscribe a project.subscribe en INSTALLED_APPS y en subscribeurls.py cambiando subscribe.views.<name> a project.subscribe.views.<name> todo funciona bien.

uwsgi config:

[uwsgi] 
socket = 127.0.0.1:9003 
workers = 2 
master = true 
virtualenv = /home/user/python 
chdir = /home/user 
env = DJANGO_SETTINGS_MODULE=project.settings 
module = django.core.handlers.wsgi:WSGIHandler() 
daemonize = /home/user/uwsgi.log 

Por qué debería utilizar la importación ruta absoluta y cómo puedo cambiarlo a volver relativa en nginx + uwsgi con virtualenv?

+0

añadir 'project' a su ruta de pitón a través del script de inicio o de otra manera virtualenv –

+0

mi script de inicio ya incluyen it: sys.path.insert (0, '/ home/user/project') – ZedXter

+0

Django amenaza las carpetas con __init__.py como paquetes y yo Configure '/ home/user/project' como directorio raíz en su script' wsgi', por lo que debería funcionar igual que 'python manage.py runserver'. –

Respuesta

7

Su configuración de uwsgi debe incluir la directiva pythonpath=/path/where/lives/settings.py/, por lo que el intérprete de python sabrá dónde encontrar sus aplicaciones.

Encuentra más información acerca de las opciones de configuración uwsgi:

+0

¡Gracias por su respuesta y enlaces muy útiles! – ZedXter

+0

Af Después de pasar innumerables horas tratando de resolver esto, la redacción de su respuesta ayudó. Muchas gracias :) – Pztar