Mod_python错误:ImportError:无法导入设置

时间:2009-06-07 18:54:09

标签: django apache mod-python

尝试让Django与Apache一起工作,我收到以下错误:

  

ImportError:无法导入设置'MyDjangoApp.settings'(是否在sys.path上?是否有语法错误?):没有名为MyDjangoApp.settings的模块

我的Django应用程序位于/ home / user / django / MyDjangoApp /

我的httpd.conf位置部分如下所示:

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

请告诉我如何纠正位置部分以使Django工作?

3 个答案:

答案 0 :(得分:11)

我认为mod_python正在寻找MKSearch模块中的设置,该模块在/ home / user / django / MyDjangoApp目录中不存在。尝试将父目录添加到PythonPath指令中,如下所示:

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

或者从DJANGO_SETTINGS_MODULE env var中删除模块名称,如下所示:

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

答案 1 :(得分:4)

给出完整性的答案 - 即使你的情况不同。

我曾经命名过我的django项目test。好吧,django正在导入python模块测试 - 这是一个用于回归测试的模块,与我的项目无关。

如果python发现另一个与django项目同名的模块,则会发生此错误。以不同的方式命名项目,或者将应用程序的父目录路径添加到sys.path。

答案 2 :(得分:-1)

以下示例位于我的Apache配置文件中。尽管人们给出了很好的答案,但我发现很难让mod_python工作。在大多数情况下,我收到的评论都说使用mod_wsgi而不是mod_python。

评论我已经看到包括来自Boston Python Meetup的所有concur mod_wsgi更容易使用。在我的Red Hat EL 5 WS案例中,从mod_python更改是不实际的。

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