2015-12-30 17 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!')