14

该应用程序使用 django 内部服务器运行良好,但是当我使用 apache + mod_python 时出现以下错误


  File "/usr/local/lib/python2.6/dist-packages/django/conf/__init__.py", line 75, in __init__
    raise ImportError, "Could not import settings '%s' (Is it on sys.path? Does it have syntax errors?): %s" % (self.SETTINGS_MODULE, e)

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

这是所需的信息

1)项目目录:/root/djangoprojects/mysite

2) /root/djangoprojects/mysite 的目录列表

ls -ltr
total 28
-rw-r--r-- 1 root root  546 Aug  1 08:34 manage.py
-rw-r--r-- 1 root root    0 Aug  1 08:34 __init__.py
-rw-r--r-- 1 root root  136 Aug  1 08:35 __init__.pyc
-rw-r--r-- 1 root root 2773 Aug  1 08:39 settings.py
-rw-r--r-- 1 root root 1660 Aug  1 08:53 settings.pyc
drwxr-xr-x 2 root root 4096 Aug  1 09:04 polls
-rw-r--r-- 1 root root  581 Aug  1 10:06 urls.py
-rw-r--r-- 1 root root  314 Aug  1 10:07 urls.pyc

3) 应用目录:/root/djangoprojects/mysite/polls

4) /root/djangoprojects/mysite/polls的目录列表

ls -ltr
total 20
-rw-r--r-- 1 root root 514 Aug  1 08:53 tests.py
-rw-r--r-- 1 root root  57 Aug  1 08:53 models.py
-rw-r--r-- 1 root root   0 Aug  1 08:53 __init__.py
-rw-r--r-- 1 root root 128 Aug  1 09:02 views.py
-rw-r--r-- 1 root root 375 Aug  1 09:04 views.pyc
-rw-r--r-- 1 root root 132 Aug  1 09:04 __init__.pyc

5) 在 python 解释器中运行 import django 的文件系统中的任何地方都可以正常工作

6) httpd.conf 的内容

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

7) PYTHONPATH 变量设置为

echo $PYTHONPATH
/root/djangoprojects/mysite

8) DJANGO_SETTINGS_MODULE 设置为

echo $DJANGO_SETTINGS_MODULE
mysite.settings

9) sys.path 的内容是

import sys
>>> sys.path
['', '/root/djangoprojects/mysite', '/usr/lib/python2.6', '/usr/lib/python2.6/plat-linux2', '/usr/lib/python2.6/lib-tk', '/usr/lib/python2.6/lib-old', '/usr/lib/python2.6/lib-dynload', '/usr/lib/python2.6/dist-packages', '/usr/local/lib/python2.6/dist-packages']

如何将设置位置添加到 sys.path 以使其在会话中持久存在?

我已经阅读了无数关于有同样问题的人的帖子,并且我已经尝试了很多完全击败了我,我需要做什么。

寻求帮助。

在此先感谢 Ankur Gupta

4

2 回答 2

5

您的 apache 配置应如下所示:

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

请注意,唯一的区别是“mysite.settings”。配置更改后不要忘记重新启动 apache(apache2ctl restart)。有关更多信息,请参阅http://docs.djangoproject.com/en/dev/howto/deployment/modpython/

于 2009-08-01T11:05:01.853 回答
0

尝试更改为以下内容:

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

在 PythonPath 条目的末尾不使用“/”(这可能是一个问题,我至少在 Windows 上遇到了问题)。

不需要条目 '/root/djangoprojects/mysite','/root/djangoprojects/mysite/polls' 因为您将按全名引用您的模块(即 mysite.sttings 表示 mysite 包中的设置模块,其中是在 PythonPath /root/djangoprojects 中访问它的正确方法)。

于 2009-09-01T17:43:45.837 回答