如何为apache虚拟主机设置PATH以包含virtualenv的bin目录?

时间:2011-12-25 06:29:52

标签: apache virtualenv django-compressor

我正在尝试将我的项目部署为虚拟主机并在virtualenv中提供服务。导入和使用virtualenv中安装的软件包不是问题。但是服务器上的以下位失败:

COMPRESS_PRECOMPILERS = (
    ('text/x-scss', 'pyscss --output {outfile} {infile}'),
)

我收到以下错误:

Caught FilterError while rendering: /bin/sh: pyscss: not found

我尝试了一些我在网上找到的但却没有奏效的东西。我对SetEnv

抱有希望
SetEnv PATH /path/to/virtualenv/bin:$PATH

但它不起作用,我的猜测是因为CompilerFilter正在使用subprocess.Popen,但我不确定。

如何避免硬编码pyscss可执行文件的路径并在bin中设置PATH目录,而仅用于此虚拟主机

更新

Apache版本 2.2.17 ,mod_wsgi版本 3.3 ,virtualenv版本 1.4.9

2 个答案:

答案 0 :(得分:1)

您应该使用所需'pyscss'脚本的完整路径,即:

/path/to/virtualenv/bin/pyscss

依靠在PATH中找到的非标准程序并不是一个好的做法。

如果您真的想忽略该建议并依赖于PATH设置,请在WSGI脚本文件中执行:

import os
os.environ['PATH'] = os.environ['PATH'] + ':/path/to/virtualenv/bin'

SetEnv指令不起作用,因为它只在WSGI环境字典中设置每个请求变量而不处理全局os.environ。

答案 1 :(得分:0)

您的Apache版本是什么?

可能与以下内容有关:SetEnv does not allow PATH override

另外,请更详细地发布您的环境。你在使用mod_wsgi,mod_fastcgi吗?