6

试图让 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 工作?

4

3 回答 3

11

我认为 mod_python 正在寻找 /home/user/django/MyDjangoApp 目录中不存在的 MKSearch 模块中的设置。尝试将父目录添加到 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 环境变量中删除模块名称,如下所示:

<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>
于 2009-06-07T23:47:30.827 回答
3

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

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

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

于 2010-02-08T08:16:58.097 回答
-1

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

我从波士顿 Python 聚会上看到的所有评论都同意 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>
于 2010-09-24T15:15:24.767 回答