我无法弄清楚为什么会这样......
在我的面料文件中,我有这个......
def func():
local("source ../venv/bin/activate")
它在源命令上返回127并且我不确定为什么,当我尝试在我的终端中手动运行源时它可以工作。当我在结构中尝试不同的命令时,比如......
local("echo 'foo'")
它也有效。为什么来源会造成问题?我无法理解为什么会发生这种情况。
答案 0 :(得分:4)
source
未知 sh
。如果要在虚拟环境的上下文中运行命令,请使用Fabric的上下文管理器并运行不带源的activate
二进制文件。我改编自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!')