Mod_python error: ImportError: Could not import settings

夙愿已清 提交于 2020-01-12 08:00:07

问题


Trying to get Django to work with Apache, and I'm getting the following error:

ImportError: Could not import settings 'MyDjangoApp.settings' (Is it on sys.path? Does it have syntax errors?): No module named MyDjangoApp.settings

My Django app is located in /home/user/django/MyDjangoApp/

My httpd.conf Location section looks like:

<Location "/MyDjangoApp/">
  SetHandler python-program
  PythonHandler django.core.handlers.modpython
  SetEnv DJANGO_SETTINGS_MODULE MKSearch.settings
  PythonOption django.root /MyDjangoApp
  PythonPath "['/home/user/django/MyDjangoApp/','/var/www'] + sys.path" 
  PythonDebug On
</Location>

Please tell me how to correct the location section to make Django work?


回答1:


I think mod_python is looking for settings in the MKSearch module which doesn't exist in side the /home/user/django/MyDjangoApp directory. Try adding the parent dir to the PythonPath directive as below:

<Location "/MyDjangoApp/">
  SetHandler python-program
  PythonHandler django.core.handlers.modpython
  SetEnv DJANGO_SETTINGS_MODULE MKSearch.settings
  PythonOption django.root /MyDjangoApp
  PythonPath "['/home/user/django/', '/home/user/django/MyDjangoApp,'/var/www'] + sys.path" 
  PythonDebug On
</Location>

Or remove the module name from the DJANGO_SETTINGS_MODULE env var as below:

<Location "/MyDjangoApp/">
  SetHandler python-program
  PythonHandler django.core.handlers.modpython
  SetEnv DJANGO_SETTINGS_MODULE settings
  PythonOption django.root /MyDjangoApp
  PythonPath "['/home/user/django/MyDjangoApp,'/var/www'] + sys.path" 
  PythonDebug On
</Location>



回答2:


Giving this answer for completeness - even though your case was different.

I've once named my django project test. Well, django was importing python module test - which is a module for regression testing and has nothing to do with my project.

This error will occur if python finds another module with the same name as your django project. Name your project in a distinct way, or prepend the path of the parent directory of your application to sys.path.




回答3:


The following example, located in my Apache configuration file, works. I found it very hard to get mod_python to work despite good answers from folks. For the most part, the comments I received all said to use mod_wsgi, instead of mod_python.

Comments I've seen including from the Boston Python Meetup all concur mod_wsgi is easier to use. In my case on Red Hat EL 5 WS, changing from mod_python is not practical.

<Location />
        SetHandler python-program
        PythonHandler django.core.handlers.modpython
        SetEnv DJANGO_SETTINGS_MODULE settings
        PythonOption django.root /home/amr/django/amr
        PythonPath "['/home/amr/django', '/home/amr/django/amr', '/usr/local/lib
/site-packages/django'] + sys.path"
        PythonDebug On
</Location>


来源:https://stackoverflow.com/questions/962533/mod-python-error-importerror-could-not-import-settings

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