使用带命名空间的结构,有没有办法指定每个文件env.shell

时间:2013-05-27 12:41:05

标签: python fabric

我使用带有命名空间的结构来分隔开发服务器和生产服务器的命令

结构是

fabfile/
    __init__.py
    dev.py
    prod.py  

dev.py prod.py 都定义了不同的env.shell,其中一个会覆盖另一个。

有没有办法为Fabric使用每个文件env配置?

1 个答案:

答案 0 :(得分:1)

我最终覆盖了 @task 装饰器,如下所示:

from functools import wraps
from fabric.api import task as real_task

def task(func):
    @wraps(func)
    def wrapper(*args, **kwargs):
        with settings(shell='/path/to/my/shell'):
            return func(*args, **kwargs)
    return real_task(wrapper)

我不能在这种形式中使用别名和其他kwargs,但它适合我。