fabfile文件结构详解

我们前面写的fabfile.py,local.py,run.py都是fabfile文件,是fab命令要读取的文件,我们要定义的任务也是写在这些文件中的。

本章介绍一下fabfile文件的写法,注意,他可以取任意的名字,不是说名字必须为fabfile。


fab命令默认查找fabfile文件的方法

根据 fabfile 的搜寻机制,Fabric 会依次查找用户当前目录以及其上层目录,因此在项目中使用时,可以把 fabfile.py 置于项目的根目录,这样无论进入项目中的任何目录时,调用 fab 命令都可以找到这个 fabfile 配置。

当然,也可以执行其他文件的任务。你要可以在命令行中通过 -f 参数。例如,想要使用 fab_tasks.py 作为 fabfile 的文件名,你只需要在创建它后输入 fab -f fab_tasks.py taskname ,或者在 ~/.fabricrc 中添加 fabfile = fab_tasks.py 。

这里提到了一个.fabricrc文件,可以理解为一个配置文件,fab运行时会到用户根目录找这个文件,读取这个文件的配置参数。

如果.fabricrc里面配置fabfile = fab_tasks.py,那么执行时就不用-f选型,就能找到fab_tasks.py文件。

如果指定的 fabfile 文件名中包含了路径元素(比如: ../fabfile.py 或者 /dir1/dir2/custom_fabfile),而不只是文件名,Fabric 将直接找到该文件,不做任何搜索。这种情况下同样接受波浪线表达式,也就是说你可以这样指定: ~/personal_fabfile.py 。


引用Fabric包

Fabric 本质上依然是 Python,因此你 可以 随意地调用它的组件。不过,处于封装和便捷性(以及 Fabric 脚本的易用性)考虑,Fabric 的公开 API 由 fabric.api 模块维护。

Fabric 的 业务(Operation) 、上下文管理器 、 装饰器 以及 实用工具 都是本模块的名字空间,为 fabfile 提供了一套简单并且统一的接口。可以用下面的代码引入所有的包:

from fabric.api import *