48👍
This can also happen if you have an application (subdirectory to the project with an init file in it) named the same thing as the project. Your settings.py file may be in your project folder, but it seems that a part of the django system looks first for a module inside the project by the same name as the project and when it can’t find a settings.py in there, it fails with a misleading message.
-uniquename1
---settings.py
---manage.py
---application1
-----file.py
-----file2.py
---uniquename1 (problem, rename this to some other unique name)
-----file.py
-----file2.py
Just something else to check for anyone else having this problem. Applies to Django 1.3 and probably others.
22👍
I had a similar permissions problem, and although my settings.py had the right permissions, the .pyc’s did not!!! So watch out for this.
- [Django]-How to monkey patch Django?
- [Django]-Django set field value after a form is initialized
- [Django]-Redis Python – how to delete all keys according to a specific pattern In python, without python iterating
18👍
Hey, just adding an additional answer to this problem. I had the exact same issue, but it wasn’t file permissions. I was appending “path/to/project”, but not also appending “path/to”. Linked is mod_wsgi’s Django integration explanation that showed me the answer.
- [Django]-Celery : Execute task after a specific time gap
- [Django]-How do I perform query filtering in django templates
- [Django]-Sorting related items in a Django template
8👍
I found the answer… file permissions. /home/django was set to 700. i.e. only django can view the contents. apache runs as Apache and so can’t get past /home/django.
- [Django]-DRY way to add created/modified by and time
- [Django]-How to perform OR condition in django queryset?
- [Django]-"CSRF token missing or incorrect" while post parameter via AJAX in Django
7👍
I think you need to have a trailing forward slash on that its what I have to do in my wsgi script in apache before I load up django.
import os
import sys
sys.path.append('/home/django/mofin/trunk/')
sys.path.append('/home/django/mofin/trunk/mofin/')
print >> sys.stderr, sys.path
os.environ['DJANGO_SETTINGS_MODULE'] = 'mofin.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
In my case
import os
import sys
if os.uname()[1] == 'vivien':
sys.path.append('/home/www/sitebuilder.blacknight.ie/web/')
os.environ['DJANGO_SETTINGS_MODULE'] = 'gibo.dev_settings'
elif os.uname()[1] == 'thingy':
sys.path.append('/home/www/sitebuilder.blacknight.ie/web/')
os.environ['DJANGO_SETTINGS_MODULE'] = 'gibo.dev_settings'
else:
sys.path.append('/home/www/sitebuilder.blacknight.ie/web/')
os.environ['DJANGO_SETTINGS_MODULE'] = 'gibo.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
- [Django]-What is more efficient .objects.filter().exists() or get() wrapped on a try
- [Django]-How do I deploy Django on AWS?
- [Django]-Run Django shell in IPython
6👍
Another cause of this problem is that you can’t name your application the same as another python module. For example I called mine site
, little realising that site
is already a python module.
You can check this by starting python, and running import site
, help(site)
, and it will show you it isn’t using your module. This of course gives you errors when django tries to import site.settings
which doesn’t exist.
- [Django]-Virtualenv and source version control
- [Django]-Django debug display all variables of a page
- [Django]-Distributing Django projects with unique SECRET_KEYs
4👍
Possible problem:
you forgot the __init__.py file, which must be in your project and in all directories which you consider a python module for import.
Other thing you could try is to add the path directly into the manage.py file, like :
import sys
...
...
sys.path.insert(0, '/home/django/mofin/trunk')
I hope it helps
- [Django]-How to force application version on AWS Elastic Beanstalk
- [Django]-Alowing 'fuzzy' translations in django pages?
- [Django]-Django change default runserver port
3👍
I had the same problem but another solution :
My project folder was named exactly as one of my application.
I had :
/home/myApp
/home/myApp/settings.py
/home/myApp/manage.py
/home/myApp/rights.py
/home/myApp/static/
/home/myApp/static/
/home/myApp/myApp/model.py
/home/myApp/myApp/admin.py
/home/myApp/myApp/views.py
This kind of tree doesn’t seems to be possible easily.
I changed the name of my project root folder and the problem was solved!
- [Django]-Reload django object from database
- [Django]-Django composite unique on multiple model fields
- [Django]-Django Rest Framework partial update
1👍
(I wrote up this same answer for Django deployment problem in Apache/mod_wsgi. ImportError: Could not import settings 'site.settings' in case someone only finds this question.)
This doesn’t appear to be the problem in your case, but I ran smack into the same ImportError when I used the WSGIPythonPath directive (instead of the .wsgi file) to set up sys.path
. That worked fine until I switched to running WSGI in daemon mode. Once you do that, you have to use the python-path
argument to the WSGIDaemonProcess directive instead.
- [Django]-Determine complete Django url configuration
- [Django]-Django gunicorn sock file not created by wsgi
- [Django]-How to use python2.7 pip instead of default pip
1👍
In my case, I had a circular import that was causing this error. From settings.py
I was importing one function in another module, and from that module I was importing a settings variable. To fix it, instead of directly importing from settings, I did this:
from django.conf import settings
- [Django]-Django: remove a filter condition from a queryset
- [Django]-Python + Django page redirect
- [Django]-Django multiprocessing and database connections
1👍
Let me add and my experience for that issue. After head banging for few hours and try all from the above answers I found that few lines in settings.py file cause the problem:
from south.modelsinspector import add_introspection_rules
add_introspection_rules([], ["^dynamicsites.fields.FolderNameField"])
add_introspection_rules([], ["^dynamicsites.fields.SubdomainListField"])
After that I made copy of the settings.py, named scripts_settings.py whithout that lines, and used that file and everything is ok now.
- [Django]-AssertionError: database connection isn't set to UTC
- [Django]-Django: how save bytes object to models.FileField?
- [Django]-Django stops working with RuntimeError: populate() isn't reentrant
0👍
At first look I’d say the python path is wrong but compared to interactive shell it looks ok.
So maybe try this:
from django.core.management import setup_environ
from mofin import settings
setup_environ(settings)
- [Django]-What's the point of Django's collectstatic?
- [Django]-How do I use CSS in Django?
- [Django]-How to mock users and requests in django
0👍
I was going to say that you can just insert/append your project directory to your sys.path in your wsgi file but if your settings file is at
/home/django/mofin/trunk/mofin/settings.py
Then you should be good there.
Is it on sys.path? Does it have syntax errors?
That pretty much sums up what you are looking for.
Interesting that the error propagates though:
for middleware_path in settings.MIDDLEWARE_CLASSES:
but you have what appears to be the exact default.
You might want to check which python interpreter is pointed to by wsgi. Are you intending to use a virtualenv but wsgi is looking at your system install?
You can also set the user and group that wsgi is running under. I use something like:
WSGIDaemonProcess mysite.com user=skyl group=skyl processes=n threads=N python-path=/home/skyl/pinax/pinax-env2/lib/python2.6/site-packages
- [Django]-No module named pkg_resources
- [Django]-The QuerySet value for an exact lookup must be limited to one result using slicing. Filter error
- [Django]-Django-way for building a "News Feed" / "Status update" / "Activity Stream"
0👍
I had a similar problem, solved it with the following snippet in my python:
ALLDIRS = ['/var/www/MarkerDB/']
import sys
import site
# Remember original sys.path.
prev_sys_path = list(sys.path)
# Add each new site-packages directory.
for directory in ALLDIRS:
site.addsitedir(directory)
# Reorder sys.path so new directories at the front.
new_sys_path = []
for item in list(sys.path):
if item not in prev_sys_path:
new_sys_path.append(item)
sys.path.remove(item)
sys.path[:0] = new_sys_pat
Source: http://code.google.com/p/modwsgi/wiki/VirtualEnvironments#Application_Environments
- [Django]-Django Queryset with filtering on reverse foreign key
- [Django]-Additional field while serializing django rest framework
- [Django]-Override existing Django Template Tags
0👍
I just had this error and the solution was to enable my virtual environment via myvenv/source/activate.
- [Django]-Python + Django page redirect
- [Django]-How can I subtract or add 100 years to a datetime field in the database in Django?
- [Django]-H14 error in heroku – "no web processes running"