尝试让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工作?
答案 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>