ImportError: Ningún módulo llamado django.core.wsgi Apache + VirtualEnv + AWS + WSGI

Estoy intentando publicar mi sitio en una instancia EC2 de Amazon y sigo recibiendo un error de 500. Realmente no sé por qué.

//Archivos de registro

[Sun Feb 17 23:12:48.066802 2013] mod_wsgi (pid=2102): Target WSGI script '/srv/www/app/poka/apache/wsgi.py' cannot be loaded as Python module. [Sun Feb 17 23:12:48.066840 2013] mod_wsgi (pid=2102): Exception occurred processing WSGI script '/srv/www/app/poka/apache/wsgi.py'. [Sun Feb 17 23:12:48.066864 2013] Traceback (most recent call last): [Sun Feb 17 23:12:48.066889 2013] File "/srv/www/mysite/poka/apache/wsgi.py", line 26, in  [Sun Feb 17 23:12:48.066920 2013] from django.core.wsgi import get_wsgi_application [Sun Feb 17 23:12:48.066945 2013] ImportError: No module named django.core.wsgi 

// Archivos de configuración de Apache

  WSGIScriptAlias / /srv/www/app/mysite/apache/wsgi.py WSGIDaemonProcess mysite python-path=/srv/www/app/mysite:/home/ec2-user/.virtualenvs/mysite-main/lib/python2.7/site-packages WSGIProcessGroup mysite   Order deny,allow Allow from all    Order deny,allow Allow from all   Order deny,allow Allow from all   Order deny,allow Allow from all  

//wsgi.py

  import os import sys import site site.addsitedir('/home/ec2-user/.virtualenvs/mysite-main/lib/python2.7/site-packages') os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings") from django.core.wsgi import get_wsgi_application application = get_wsgi_application() path = '/srv/www/app/mysite' if path not in sys.path: sys.path.append(path) 

Sé que este es un hilo viejo, pero acabo de tropezar con el mismo problema y no creo que esto sea causado por un paquete que falta. Como la distribución central de Django ya contiene el controlador wsgi correcto.

El problema aquí es que cuando se ejecuta wsgi.py, faltan los paquetes del sitio-paquetes de su virtualenv. (Si ha activado su virtualenv, y hecho pip install django, entonces todo está bien. Tiene los paquetes django necesarios).

En lo que a mí respecta, he solucionado el problema al modificar sys.path en mi archivo Path / to / Project / Project / wsgi.py.

Debe agregar su directorio de proyecto y sus paquetes de sitio virtualenv a la lista sys.path. Aquí está mi archivo wsgi.py contenido en mi proyecto (Hablando de wsgi.py creado con django-admin.py start-project) … que tuve que modificar para que funcione con Apache

 # ===================== # wsgi.py file begin import os, sys # add the hellodjango project path into the sys.path sys.path.append('/hellodjango') # add the virtualenv site-packages path to the sys.path sys.path.append('/Lib/site-packages') # poiting to the project settings os.environ.setdefault("DJANGO_SETTINGS_MODULE", "hellodjango.settings") from django.core.wsgi import get_wsgi_application application = get_wsgi_application() # wsgi.py file end # =================== 

Asegurarse:

  1. agregaste mod_wsgi a los módulos de Apache dir mod_wsgi debe comstackrse para el SO, Apache y la versión de Python que tienes

  2. agregó el comando load module en su httpd.conf para cargar el módulo mod_wsgi LoadModule wsgi_module modules / mod_wsgi.so

  3. configuró los detalles de Django en su httpd.conf o cualquier conf que incluya en su httpd.conf

Basado en la documentación Cómo usar Django con Apache y mod_wsgi

 WSGIScriptAlias / /hellodjango/hellodjango/wsgi.py WSGIPythonPath :/Lib/site-packages /hellodjango/hellodjango>  Order deny,allow Require all granted   

Espero que esto ayude. Funcionó para mí

Agregue esto al archivo de configuración de Apache:

 WSGIPythonHome /home/ec2-user/.virtualenvs/mysite-main 

Para mí, esto indicaba que Django no estaba instalado en el servidor. Solucionado a través de

 pip install Django 

Tuve un error similar en este momento. Resulta que nuestro código Django fue desarrollado en Python 3.5, pero por alguna razón las personas que implementaron nuestra configuración de servidor virtualEnv con python 2.7. Nos redistribuimos con Python 3.5 y todo funcionó para nosotros

Debajo estaba el mensaje de error que recibí:

 $ python serviceStartup.py Traceback (most recent call last): File "serviceStartup.py", line 10, in  from django.core.wsgi import get_wsgi_application ImportError: No module named django.core.wsgi 

Espero que esto ayude a cualquiera que vea un mensaje de error similar.

Has configurado todo muy bien, amigo, solo tienes que darle permiso al usuario de apache para acceder a los directorios de proyectos y virtualenv.

Ejemplo:

 sudo chown -R www-data:www-data /home/ubuntu/projects sudo chown -R www-data:www-data /home/ubuntu/virtualenv 

Esto resolvió mi problema con ImportError: No module named django.core.wsgi (carpetas virtualenvs) e ImportError: No module named .settings (carpetas de proyectos)

A primera vista, lo siento por mi inglés. También me enfrenté a este problema y lo resolví cambiando el archivo ‘wsgi.py’ a:

 importación os
 importar django
 de django.core.handlers.wsgi import WSGIHandler


 os.environ.setdefault ("DJANGO_SETTINGS_MODULE", "eisentask.settings.production")
 django.setup (set_prefix = False)

 aplicación = WSGIHandler ()

Para mí fue necesario configurar algunas variables (para Windows):

 set PYTHONHOME=F:\path\to\python set PYTHONPATH=F:\path\to\python 

Asegúrese de estar utilizando el módulo uwsgi instalado dentro del virtualenv, por ejemplo:

 /home/ubuntu/venv/bin/uwsgi --ht :8000 --module mysite.wsgi