unable - ImportError: Ningún módulo llamado django.core.wsgi Apache+VirtualEnv+AWS+WSGI
importerror no module named django core wsgi apache2 (8)
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:
import os import django from django.core.handlers.wsgi import WSGIHandler os.environ.setdefault("DJANGO_SETTINGS_MODULE", "eisentask.settings.production") django.setup(set_prefix=False) application = WSGIHandler()
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 <module>
[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
<Directory /srv/www/app/mysite/apache/>
<Files wsgi.py>
Order deny,allow
Allow from all
</Files>
</Directory>
<Directory /srv/www/app/mysite/apache/>
Order deny,allow
Allow from all
</Directory>
<Directory /home/ec2-user/app/mysite/static>
Order deny,allow
Allow from all
</Directory>
<Directory /home/ec2-user/app/mysite/media>
Order deny,allow
Allow from all
</Directory>
//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)
Agregue esto al archivo de configuración de Apache:
WSGIPythonHome /home/ec2-user/.virtualenvs/mysite-main
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
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 <project-name>.settings
(carpetas de proyectos)
Para mí fue necesario configurar algunas variables (para Windows):
set PYTHONHOME=F:/path/to/python
set PYTHONPATH=F:/path/to/python
Para mí, esto indicaba que Django no estaba instalado en el servidor. Solucionado a través de
pip install Django
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(''<PATH_TO_MY_DJANGO_PROJECT>/hellodjango'')
# add the virtualenv site-packages path to the sys.path
sys.path.append(''<PATH_TO_VIRTUALENV>/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:
agregaste mod_wsgi a los módulos de Apache dir mod_wsgi debe compilarse para el SO, Apache y la versión de Python que tienes
agregó el comando load module en su httpd.conf para cargar el módulo mod_wsgi LoadModule wsgi_module modules / mod_wsgi.so
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 / <PATH_TO_PROJECT>/hellodjango/hellodjango/wsgi.py
WSGIPythonPath <PATH_TO_PROJECT>:<PATH_TO_VIRTUALENV>/Lib/site-packages
<Directory <PATH_TO_PROJECT>/hellodjango/hellodjango>
<Files wsgi.py>
Order deny,allow
Require all granted
</Files>
</Directory>
Espero que esto ayude. Funcionó para mí
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 <module>
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.