我正在尝试将我的项目部署为虚拟主机并在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 。
答案 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吗?