2015-12-30 43 views
1

返回127我只是想不通爲什麼會這樣......面料與「源」命令

在我的布文件,我有這個

...

def func(): 
    local("source ../venv/bin/activate") 

它返回127在源命令上,我不知道爲什麼,當我嘗試在我的終端中手動運行源代碼時它工作。當我嘗試不同的織物命令,如...

local("echo 'foo'") 

它也有效。爲什麼源會造成問題?我不明白爲什麼會發生這種情況。

回答

3

source未知於sh。如果要在虛擬環境的上下文中運行命令,請使用Fabric的上下文管理器並運行沒有源代碼的二進制文件。我改編自this answer

from __future__ import with_statement 
from fabric.api import * 
from contextlib import contextmanager as _contextmanager 

env.activate = '. ./.env/bin/activate' 

@_contextmanager 
def virtualenv(): 
    with prefix(env.activate): 
     yield 

def deploy(): 
    with virtualenv(): 
     local('echo hello world!')