I am trying to publish my site on an Amazon's EC2 Instance, and I keep getting a 500 error. I really don't know why.
//Log Files
[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
//Apache Config Files
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)
score:-2
For me it was some variables that needed to be setted (for windows) :
set PYTHONHOME=F:\path\to\python
set PYTHONPATH=F:\path\to\python
score:0
At first glance, I am sorry for my English. I also faced this issue, and I have solved it by changing 'wsgi.py' file to:
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()
Some more answer related to the same question
- ImportError: No module named django.core.wsgi Apache + VirtualEnv + AWS + WSGI
- Apache with virtualenv and mod_wsgi : ImportError : No module named 'django'
- Django Apache and Virtualenv ImportError: No module named site
- Apache ImportError: No module named _socket in wsgi deployment on Django
- Apache virtualenv and mod_wsgi : ImportError : No module named 'django'
- Django WSGI APACHE ModuleNotFoundError: No module named 'django'
- Apache Wsgi virtualHost, Django virtual env "no module named django.core.wsgi"
- ImportError: No module named django.core.handlers.wsgi in install django mod_wsgi config on apache
- django + virtualenv + gunicorn - No module named django.core.wsgi?
- Django + mod_wsgi + apache: ImportError at / No module named djproj.urls
score:0
I am using Centos and the nginx and gunicorn for my project... I had this problem... wsgi file is not reachable maybe it's bcz of the your current directory I changed my current directory and It worked... my project name is coda so I typed
cd coda
and then
gunicorn --bind 0.0.0.0:8001 coda.wsgi
score:0
In case someone came here using AWS Lightsail bitnami..
The problem is that 'python install packages in a directory that apache do not see'.
so: packages get installed in '/home/bitnami/.local/lib/python3.8/site-packages/' and Apache looks in '/opt/bitnami/python/lib/python3.8/site-packages/'.
The temporary solution I followed is copying packages to Apache eyes folder with this command 'cp -r /home/bitnami/.local/lib/python3.8/site-packages/* /opt/bitnami/python/lib/python3.8/site-packages/'
Related question
- Running django in virtualenv - ImportError: No module named django.core.management?
- Django / Apache / mod_wsgi: No module named importlib
- ImportError at / No module named quickstart in django rest framework
- Django AWS Elastic Beanstalk error ImproperlyConfigured: Error loading MySQLdb module: No module named MySQLdb
- Django on AWS Elastic Beanstalk - No module named MySQLdb Error
- ImportError No module named localflavor.us.forms in Django 1.7
- 'No module named 'encodings'' error when deploying django app on apache with mod_wsgi
- Django mod_wsgi Apache Server, ModuleNotFoundError: No Module Named Django
- Running Django in Virtualenv on EC2 -- ImportError: No module named django.core.management
- Django - ImportError at /blog. No module named urls
score:0
Hi I got the same issue in Ubuntu 20.04 server. I fixed it by installing apache2-dev
sudo apt-get install apache2-dev
In mod_wsgi documentation its important to have both apache2
and apache2-dev
installed.
score:1
You've configured everything very well my friend, just need to give the apache user permission to access both project and virtualenv dirs.
Example:
sudo chown -R www-data:www-data /home/ubuntu/projects
sudo chown -R www-data:www-data /home/ubuntu/virtualenv
This solved my problem with ImportError: No module named django.core.wsgi
(virtualenvs folders) and ImportError: No module named <project-name>.settings
(projects folders)
score:3
For me, this indicated Django wasn't installed on the sever. Fixed via
pip install Django
score:4
I had a similar error just now. It turns out that our Django code was developed on python 3.5, but for some reasons the people who deployed our server setup virtualEnv with python 2.7. We redeployed with python 3.5 and everything worked for us
Below was the error message I received:
$ 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
Hope this will help with anyone seeing a similar error message!
score:7
Add this to the Apache configuration file:
WSGIPythonHome /home/ec2-user/.virtualenvs/mysite-main
score:29
I had the same issue. My libapache2-mod-wsgi was python 2.x and not python 3.x
found the solution here: https://stackoverflow.com/a/28118284/2489042
credits to @nima
$ sudo apt-get remove libapache2-mod-python libapache2-mod-wsgi
$ sudo apt-get install libapache2-mod-wsgi-py3
Warning from @alxs before you copy/paste these commands: If there are python 2 projects running on the server that use wsgi and apache, the above commands will effectively shut them down.
score:52
I know that this is an old thread but I've just bumped into the same issue and I don't think that this is caused by a missing package. As the Django core distribution contains the correct wsgi handler already.
The problem here is that when wsgi.py is executed it's missing the packages of the site-packages from your virtualenv. (If you have activated your virtualenv, and done pip install django then everything is fine. You have the necessary django packages).
As far as I'm concerned, I fixed the issue modifying the sys.path in my Path/to/Project/Project/wsgi.py file.
You have to append your project dir and your virtualenv site-packages to the sys.path List. Here is my wsgi.py file contained in my project (Talking about the wsgi.py created with django-admin.py start-project)... that I had to modify in order to make it work with 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
# ===================
Make sure:
you added mod_wsgi to the Apache modules dir mod_wsgi must be compiled for the OS, Apache and Python version you have
added the load module command into your httpd.conf to load mod_wsgi module LoadModule wsgi_module modules/mod_wsgi.so
configured Django specifics in your httpd.conf or any conf you include in your httpd.conf
Based on the documentation How to use Django with Apache and 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>
Hope this helps. It worked for me.
Credit To: stackoverflow.com
Related Query
- django virtualenv - Error: No module named south
- django : ImportError No module named myapp.views.hometest
- Could not import/No module named Django Error with Apache
- google app engine (python): ImportError no module named django
- ImportError at / No module named 'wsgi' in django
- Python, Django mod_wsgi, virtualenv errror: ImportError: No module named os (paths are not correct)
- Django Apache error: No module named 'encodings'. Windows server 2008 R2 Standard
- Django with Heroku, No module named django core management
- Django with apache and wsgi throws ImportError
- "Error: No module named haystack" after installing django haystack inside virtualenv
More Query from same tag
- Alternative text in Django forms for None value in DateField
- Custom order field with Django Rest Framework
- CheckBox Input Validation in Django
- Django DRY URLs for Model access
- Django Template Not Found
- ImportError: Could not import settings
- django admin inlines: get object from formfield_for_foreignkey
- Reverse list in descending order to get the last objects in django template
- Django Tables adding a LinkColumn / NoReverseMatch Error
- How to access Heroku config variables inside Django settings
- Django Filtering Search Results using GET
- django reversing url failure with hyphen in view name
- Django get coordinate values of PointField
- Django, Haystack, Solr, MongoDB architecture decision
- AttributeError at /invoice/add_invoice/ 'int' object has no attribute '_meta' while using in_bulk