2011-12-25 64 views
2

我試圖將我的項目部署爲虛擬主機,並在virtualenv中提供它。導入和使用virtualenv中安裝的軟件包不是問題。但下列位服務器上失敗:如何爲apache虛擬主機設置PATH以包含virtualenv的bin目錄?

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可執行文件的路徑,並有在PATHbin目錄,但只爲這虛擬主機

UPDATE:

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

回答

1

您應該使用完整路徑需要「pyscss」的腳本,即:

/path/to/virtualenv/bin/pyscss 

這是不是過於依賴它在PATH非標程序被發現好的做法。

如果你真的想忽略這個建議,並依靠路徑設置反正在WSGI腳本文件做:

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

SetEnv指令將無法正常工作,因爲它只能在WSGI ENVIRON字典每個請求的變量設置而不是處理全局os.environ。

+0

謝謝格雷厄姆。第一個建議是有道理的,我會去做。 – muhuk 2011-12-26 08:21:15

0

你的Apache版本是什麼?

也許與相關:SetEnv does not allow PATH override

另外,請詳細發表您的環境。你在使用mod_wsgi,mod_fastcgi嗎?

+0

你好。我已添加版本信息。 – muhuk 2011-12-25 12:37:59