我使用带有命名空间的结构来分隔开发服务器和生产服务器的命令
结构是
fabfile/ __init__.py dev.py prod.py
dev.py 和 prod.py 都定义了不同的env.shell
,其中一个会覆盖另一个。
有没有办法为Fabric使用每个文件env
配置?
答案 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,但它适合我。