How do I stop getting ImportError: Could not import settings 'mofin.settings' when using django with wsgi?

前端 未结 15 1933
渐次进展
渐次进展 2020-12-04 11:15

I can\'t get wsgi to import my settings file for my project \'mofin\'.

The list of errors from the apache error log are as follows

mod_wsgi (pid=4001         


        
相关标签:
15条回答
  • 2020-12-04 11:45

    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()
    
    0 讨论(0)
  • 2020-12-04 11:46

    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)
    
    0 讨论(0)
  • 2020-12-04 11:47

    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.

    0 讨论(0)
  • 2020-12-04 11:49

    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

    0 讨论(0)
  • 2020-12-04 11:50

    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

    0 讨论(0)
  • 2020-12-04 11:50

    I just had this error and the solution was to enable my virtual environment via myvenv/source/activate.

    0 讨论(0)
提交回复
热议问题