ImportError: No module named django.core.wsgi Apache + VirtualEnv + AWS + WSGI

邮差的信 提交于 2019-11-27 03:50:19

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:

  1. you added mod_wsgi to the Apache modules dir mod_wsgi must be compiled for the OS, Apache and Python version you have

  2. added the load module command into your httpd.conf to load mod_wsgi module LoadModule wsgi_module modules/mod_wsgi.so

  3. 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.

Add this to the Apache configuration file:

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

For me, this indicated Django wasn't installed on the sever. Fixed via

pip install Django

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!

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)

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()

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

Make sure that you are using the uwsgi module installed inside the virtualenv, for exemple:

/home/ubuntu/venv/bin/uwsgi --ht :8000 --module mysite.wsgi
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!