试图让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工作?
我认为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>
给出这个答案的完整性 – 即使你的情况是不同的。
我曾经命名我的django项目test
。 那么,Django导入python模块测试 – 这是一个回归测试模块,并与我的项目没有任何关系。
如果python发现另一个与你的django项目同名的模块,就会发生这个错误。 以不同的方式命名您的项目,或者将您的应用程序的父目录的路径预先添加到sys.path中。
以下示例位于我的Apache配置文件中。 我发现很难得到mod_python工作,尽管人们很好的答案。 大多数情况下,我收到的评论都说使用mod_wsgi,而不是mod_python。
我见过的评论包括波士顿Python Meetup,所有的concur mod_wsgi都比较容易使用。 在我的红帽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>