我已经尽力遵循http://docs.djangoproject.com/en/dev/howto/deployment/modpython/,但客户正在将网站转移给我们,我怀疑原始开发人员的方法有点不同。
首先是完整的错误消息:
ImportError: Could not import settings 'settings.py' (Is it on sys.path? Does it have syntax errors?): No module named py
然后,站点的 apache 配置:
<Location /acecoach/>
SetHandler python-program
PythonHandler django.core.handlers.modpython
SetEnv DJANGO_SETTINGS_MODULE settings.py
PythonOption django.root /acecoach
PythonPath "['/home/acecoach/public_html/acecoach'] + sys.path"
PythonDebug On
</Location>
现在,据我所知,“设置模块”位于/home/acecoach/public_html/acecoach/settings.py
该文件可由 apache 服务器读取 - 我通过实际 SU-ing 到 apache 用户并从命令行读取文件来测试这一点。
我也读过关于此错误消息的类似建议,但发现没有有用的帮助。这让我很抓狂。:)
答案1
删除.py
文件扩展名并将项目上下文添加到您的设置模块定义中。假设您的项目名为acecoach
。
SetEnv DJANGO_SETTINGS_MODULE acecoach.settings
Python 文档对原因的解释比我尝试的要简单得多。
http://docs.python.org/tutorial/modules.html#modules
模块是包含 Python 定义和语句的文件。文件名为模块名加上后缀 .py。
http://docs.python.org/tutorial/modules.html#packages
包是使用“点状模块名称”构造 Python 模块命名空间的一种方式。例如,模块名称 AB 表示包 A 中名为 B 的子模块。
答案2
嘿,我在 mod_python 中也遇到了同样的问题,但是当我迁移到 apache + mod_wsgi 时,所有问题都解决了。
你为什么不试试 mod_wsgi ?
它比 mod_python 新,没有这样的问题。
但如果你想解决这个问题,你可以去这个地址:
https://stackoverflow.com/questions/1216340/django-newbie-deployment-question-importerror-could-not-import-settings-setti