我已经阅读了大量有关wsgi没有看到Django settings.py文件问题的帖子,最好的结论是我的Django项目不是在我的PYTHONPATH。使用wsgi和virtualenv时出现django错误:无法导入设置
复杂的事情是,我在系统级运行Django的旧版本,但是这个项目需要在virtualenv中运行。
我已经成立了位于/ usr /本地/ pythonenv /选举的virtualenv,我的项目位于位于/ usr /本地/ pythonenv /选/ src目录的/ dev /选
我.wsgi文件是一个在/ usr /本地/ pythonenv /选/ src目录的/ dev /选/配置/
我可以用$蟒蛇manage.py runserver命令
运行Django的服务器,但使用Apache和mod_wsgi的时候,我得到的错误:
ImportError: Could not import settings 'election.settings' (Is it on sys.path? Does it have syntax errors?): No module named election.settings
这是我的.wsgi文件:
import os
import sys
import site
sys.stdout = sys.stderr
HERE = env_root = os.path.abspath(os.path.dirname(__file__))
found = False
while env_root != '/':
env_root = os.path.abspath(os.path.dirname(env_root))
if os.path.exists(os.path.join(env_root, 'bin', 'activate')):
found = True
break
assert found, "didn't find a virtualenv in any parent of %s" % HERE
sitepackages_root = os.path.join(env_root, 'lib')
assert os.path.exists(sitepackages_root), "no such dir %s" % sitepackages_root
for d in os.listdir(sitepackages_root):
if d.startswith('python'):
site.addsitedir(os.path.join(sitepackages_root, d, 'site-packages'))
break
else:
raise RuntimeError("Could not find any site-packages to add in %r" % env_root)
os.environ['DJANGO_SETTINGS_MODULE'] = 'election.settings'
os.environ['PYTHON_EGG_CACHE'] = '/tmp/election-python-eggs'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
这里的回溯:
[Sat Jan 07 21:54:19 2012] [error] [client 192.168.150.122] File "/usr/lib/pymodules/python2.6/django/core/handlers/base.py", line 33, in load_middleware
[Sat Jan 07 21:54:19 2012] [error] [client 192.168.150.122] for middleware_path in settings.MIDDLEWARE_CLASSES:
[Sat Jan 07 21:54:19 2012] [error] [client 192.168.150.122] File "/usr/lib/pymodules/python2.6/django/utils/functional.py", line 269, in __getattr__
[Sat Jan 07 21:54:19 2012] [error] [client 192.168.150.122] self._setup()
[Sat Jan 07 21:54:19 2012] [error] [client 192.168.150.122] File "/usr/lib/pymodules/python2.6/django/conf/__init__.py", line 40, in _setup
[Sat Jan 07 21:54:19 2012] [error] [client 192.168.150.122] self._wrapped = Settings(settings_module)
[Sat Jan 07 21:54:19 2012] [error] [client 192.168.150.122] File "/usr/lib/pymodules/python2.6/django/conf/__init__.py", line 75, in __init__
[Sat Jan 07 21:54:19 2012] [error] [client 192.168.150.122] raise ImportError, "Could not import settings '%s' (Is it on sys.path? Does it have syntax errors?): %s" % (self.SETTINGS_MODULE, e)
[Sat Jan 07 21:54:19 2012] [error] [client 192.168.150.122] ImportError: Could not import settings 'election.settings' (Is it on sys.path? Does it have syntax errors?): No module named election.settings
当我将项目目录添加到sys.path时,我开始收到错误信息,提示它没有看到正确版本的Django。错误地配置:导入中间件时出错django.middleware.csrf:“没有名为csrf的模块” – wmfox3 2012-01-08 13:50:25
在将灵活的WSGI文件改为Graham更简化的方法之后,将项目目录添加到我的sys.path并调用activate_this方法后,好好工作。谢谢。 – wmfox3 2012-01-08 14:43:22