2013-08-28 64 views
3

我的布文件:workon命令

def deploy(): 
    code_path = 'mysite/public_html/mysite' 
    with cd(code_path): 
     with prefix("workon mysite"): 
     run('git pull') 
     run('supervisorctl -c ~/supervisord.conf restart ' + env.host_string) 

我得到以下錯誤:

Aborting. 
[myserv] out: /bin/bash: workon: command not found 

顯然workon命令作品當我這樣做手動(無織物)。我懷疑/usr/local/bin/virtualenvwrapper.sh不是來源(它通常通過.bash_profile運行)。

我需要做些什麼來獲得workon命令的工作?

+0

您是否嘗試過的機器上運行的workon CMD您正在使用相同的用戶身份運行命令面料? – Greg

回答

7

嘗試用修改您的前綴:

with prefix(". /usr/local/bin/virtualenvwrapper.sh; workon mysite"): 
+0

感謝您的有用信息。我甚至會說'用prefix('。/usr/local/bin/virtualenvwrapper.sh'):'then'用前綴('workon project'):' –

+1

好吧,它可以工作,但並不能解釋它爲什麼不默認工作。對於我自己,bashrc被執行,但沒有workon命令可用。這很奇怪。 –

2

你有這個virtualwrapper負載代碼複製從.bashrc.bash_profile文件或如果不存在創建新的.bash_profile文件並複製那裏。

代碼複製::

export WORKON_HOME=/home/virtual 
source /usr/local/bin/virtualenvwrapper.sh 

這個錯誤發生,因爲.bashrc僅由一個外殼,既是交互式和非登錄閱讀。所以在這種情況下,它不是交互式非登錄shell,所以它不起作用。所以我們必須將這些代碼複製到.bash_profile文件中。

reference link