Apache+Django Python路径混淆:ImportError: 无法导入设置'mysite.settings
我使用的是 Python 2.4、Django 1.2.2 和 Apache 2.2.3。
我在 httpd.conf 文件中这样写:
<Location "/mysite/">
PythonPath "['/home/usr/www'] + sys.path"
SetHandler python-program
PythonHandler django.core.handlers.modpython
SetEnv DJANGO_SETTINGS_MODULE mysite.settings
PythonOption django.root /mysite
PythonDebug On
</Location>
settings.py 的路径是:/home/usr/www/mysite/
但是它不工作,当我访问 http://localhost/mysite/ 时,出现了问题。
导入错误:无法导入设置 'mysite.settings'
我修改了一下,把 /home/usr/www 改成了 /var/www,并把 settings.py 复制到 /var/www,结果就可以正常工作了。
那么为什么 Apache 会对这两个目录的处理不一样呢?
2 个回答
0
添加 PythonPath "['/home/usr/www/mysite'] + sys.path"
1
你在用SELinux吗?可以对比一下下面这两个命令的输出:
ls -laZ /var/www
和
ls -laZ /home/usr/www
很可能你的家目录无法被apache进程访问。如果真是这样,解决方法可能很简单,试试:
chcon -R --reference=/var/www /home/usr/www
chmod og+x /home/usr /home/usr/www
顺便提一下:http://docs.djangoproject.com/en/dev/howto/deployment/modpython/ 提醒说“mod_python将在未来的Django版本中被弃用。如果你在配置新的部署,强烈建议考虑使用mod_wsgi或其他支持的后端。”