Django中使用VirtualEnv和mod-wsgi时的SyntaxError
我在我的生产环境的 Ubuntu 13.04
服务器上使用 VirtualEnv
和 mod-wsgi
时遇到了问题。
有没有人能告诉我可能是什么问题呢?
以下是我遇到的语法错误的追踪信息:
[Mon Jul 14 14:37:09 2014] [error] [client 70.180.246.22] mod_wsgi (pid=14292): Target WSGI script '/home/aaron/public_html/flapsta.com/flapsta/flapsta/flapsta.wsgi' cannot be loaded as Python module.
[Mon Jul 14 14:37:09 2014] [error] [client 70.180.246.22] mod_wsgi (pid=14292): Exception occurred processing WSGI script '/home/aaron/public_html/flapsta.com/flapsta/flapsta/flapsta.wsgi'.
[Mon Jul 14 14:37:09 2014] [error] [client 70.180.246.22] Traceback (most recent call last):
[Mon Jul 14 14:37:09 2014] [error] [client 70.180.246.22] File "/home/aaron/public_html/flapsta.com/flapsta/flapsta/flapsta.wsgi", line 16, in <module>
[Mon Jul 14 14:37:09 2014] [error] [client 70.180.246.22] execfile(activate_env, dict(__file__=activate_env))
[Mon Jul 14 14:37:09 2014] [error] [client 70.180.246.22] File "/home/.virtualenvs/flapsta/bin/activate", line 4
[Mon Jul 14 14:37:09 2014] [error] [client 70.180.246.22] deactivate () {
[Mon Jul 14 14:37:09 2014] [error] [client 70.180.246.22] ^
[Mon Jul 14 14:37:09 2014] [error] [client 70.180.246.22] SyntaxError: invalid syntax
我的 flapsta.wsgi 文件设置如下:
import os
import sys
import site
# Add the site-packages of the chosen virtualenv to work with
site.addsitedir('/home/.virtualenvs/flapsta/lib/python2.7/site-packages')
# Add the app directories to the PYTHONPATH
sys.path.append('/home/aaron/public_html/flapsta.com')
sys.path.append('/home/aaron/public_html/flapsta.com/flapsta')
os.environ['DJANGO_SETTINGS_MODULE'] = 'flapsta.settings'
# Activate the virtualenv
activate_env=os.path.expanduser('/home/.virtualenvs/flapsta/bin/activate')
execfile(activate_env, dict(__file__=activate_env))
import django.core.handlers.wsgi
_application = django.core.handlers.wsgi.WSGIHandler()
def application(environ, start_response):
# DB
# .... envirtonment variables ....
return _application(environ, start_response)
当我把这一行注释掉时:
execfile(activate_env, dict(__file__=activate_env))
就不再激活 virtualenv
了,这样我就可以正常加载网站,但显然我不能使用 virtualenv
来托管多个有不同依赖的网站。
这是一个已知的问题吗?还是我在某个配置上遗漏了什么,希望有人能帮我指出来?
我正在运行:
Django 1.5.4
viritualenv 1.11.1
Apache2.2
Ubuntu 13.04
Python 2.7.4
提前谢谢大家。
1 个回答
3
你想在Python中运行bash的激活脚本。其实你应该运行的是activate_this.py
这个Python脚本。