Django新手尝试让treeio在apache后工作

1 投票
1 回答
596 浏览
提问于 2025-04-17 08:43

我好像遇到了和这个人类似的问题:Django新手部署问题 - 导入错误:无法导入设置'settings',但我完全搞不懂。服务器运行的是Debian系统。这个应用在内部服务器上运行得很好,但是当我尝试使用apache和mod_python时,就出现了以下问题。

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

ImportError: Could not import settings 'treeio.settings' (Is it on sys.path?): No module named treeio.settings
  1. 项目目录是 /var/www/treeio
  2. 所有文件的权限都是777(我在测试是否有权限问题)
  3. httpd.conf的内容

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

更多信息:

echo $PYTHONPATH
:/var/www/treeio/..:/var/www/treeio

echo $DJANGO_SETTINGS_MODULE
treeio.settings

>>> import sys
>>> sys.path
['', '/usr/local/lib/python2.6/dist-packages/pip-1.0.2-py2.6.egg', '/var/www/treeio', '/var/www', '/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/local/lib/python2.6/dist-packages', '/usr/lib/python2.6/dist-packages', '/usr/lib/pymodules/python2.6']

帮帮我,stackoverflow,你是我唯一的希望!

1 个回答

2

你的主要问题是,你在使用mod-python,尽管已经有明确的警告说它已经过时,不应该用于新的项目。

不过如果你真的坚持要用它,问题就很明显了:你把/var/www/trio加到了路径中,所以在trio里的所有东西都需要直接引用——也就是说用settings,而不是trio.settings

撰写回答