我已经尽力按照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
然后,该站点的apacheconfiguration:
<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服务器读取 – 我testing了这个文件实际上是通过apache用户从命令行读取文件。
我也读过类似的build议,在这方面没有任何有用的帮助。 这让我疯狂。 🙂
删除.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的子模块。
嘿,我也有同样的问题在mod_python也是,但是当我迁移到Apache + mod_wsgi所有我的proplems解决。
为什么你没有尝试mod_wsgi?
它比mod_python更新,并没有这样的问题。
但是如果要解决这个问题,你可以去这个地址:
https://stackoverflow.com/questions/1216340/django-newbie-deployment-question-importerror-could-not-import-settings-setti