【问题标题】:SyntaxError with VirtualEnv + mod-wsgi in DjangoDjango 中 VirtualEnv + mod-wsgi 的 SyntaxError
【发布时间】:2014-07-14 15:04:33
【问题描述】:

我在使用mod-wsgi 的生产Ubuntu 13.04 服务器上使用VirtualEnv 时遇到问题。

有人能指出问题可能是什么吗?

这是我收到以下语法错误的回溯:

[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

我的翻盖.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

提前致谢。

【问题讨论】:

  • 为什么不能使用virtualenv 来托管具有不同依赖关系的多个站点?

标签: python django virtualenv mod-wsgi wsgi


【解决方案1】:

您正在尝试在 Python 中执行 bash 激活脚本。您应该正在执行activate_this.py Python 脚本。

【讨论】:

  • 修复了SyntaxError 消息,但我仍然无法在编译时将我的包从virtualenv 导入到站点中。我将wsgi.py 作为正常配置,只更改了flapsta.wsgi。我还需要对wsgi.py 进行一些配置吗?谢谢。
  • windows中没有activate_this.py。这种情况如何解决?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-16
  • 2012-11-25
  • 2015-11-17
  • 1970-01-01
  • 1970-01-01
  • 2020-05-29
相关资源
最近更新 更多