我在Django 1.1.4中有一个项目,我正在尝试使用mod_wsgi在生产中设置这个项目,但是我遇到了一些错误:
我的wsgi文件代码:
import os
import sys
import site
# Add the site-packages of the chosen virtualenv to work with
site.addsitedir('path_to_\site-packages')
# Add the app's directory to the PYTHONPATH
sys.path.append('path_to_dir')
sys.path.append('path_to_dir')
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
我试图调试错误,就像在我的设置中打印一些内容时它没有打印,所以我猜我的设置没有被调用。
我的wsgi和设置文件属于同一级别,我使用了两种方法来提及我的wsgi文件中的设置,如os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
和os.environ['DJANGO_SETTINGS_MODULE'] = 'project.settings'
,但都失败了。
错误 - 记录:
File "C:\\Python27\\lib\\site-packages\\django\\core\\handlers\\wsgi.py", line 230, in __call__
self.load_middleware()
File "C:\\Python27\\lib\\site-packages\\django\\core\\handlers\\base.py", line 33, in load_middleware
for middleware_path in settings.MIDDLEWARE_CLASSES:
File "C:\\Python27\\lib\\site-packages\\django\\utils\\functional.py", line 272, in __getattr__
self._setup()
File "C:\\Python27\\lib\\site-packages\\django\\conf\\__init__.py", line 40, in _setup
self._wrapped = Settings(settings_module)
File "C:\\Python27\\lib\\site-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 'cbc_website.settings' (Is it on sys.path? Does it have syntax errors?): No module named cbc_website.settings
答案 0 :(得分:1)
Python正在解释你的' \'在路径定义中作为转义字符。 https://docs.python.org/2/reference/lexical_analysis.html#string-literals
在指定带反斜杠的文字路径时使用r'path'
。所以而不是:
sys.path.append('C:\\\something')
您指定:
sys.path.append(r'C:\\\something')
在wsgi.py
文件中。
答案 1 :(得分:0)
您是否尝试导入yourprojectname.settings
而非settings
?
这是我所做的,以及评论中提供的链接https://github.com/django/django/blob/1.1.4/docs/howto/deployment/modwsgi.txt中指定的内容。