該篇文章來源於 Fabric 的官方文檔,原文爲Fabfile construction and usehtml
這篇文章包含了關於 fabfiles 的如下兩項python
Fabric 可以加載 Python 模塊(好比:fabfile.py
)或者 包(好比:一個包含__init__.py
文件的名叫fabfile
的目錄)。它默認尋找命名爲 fabfile
的文件或者目錄,要麼是 fabfile/
,要麼是fabfile.py
。算法
fabfile 發現算法搜索調用用戶的當前工做目錄或者是任何父目錄。所以,它是面向「工程」使用的,這個工程的源碼樹的根目錄有一個 fabfile.py
文件。不管在這個樹的哪裏,當使用 fab
命令的調用的時候,這個 fabfile
文件將被發現。api
可使用命令行參數 -f
來重寫指定名字搜索到的 fabfile
文件,或者是加一個 fabricrc 行來設置 fabfile
的值。例如,你想命名你的 fabfile
爲 fab_tasks.py
,你能夠建立這樣一個文件,而後調用命令 fab -f fab_tasks.py <task name>
,或者是添加以下 fabfile = fab_tasks.py
到 ~/.fabricrc
文件裏面。ide
若是給定的 fabfile 名字中除了文件名以外還包含路徑(好比:../fabfile.py
或者是 /dir1/dir2/custom_fabfile
),它將被做爲一個文件路徑對待,而且沒有任何排序搜索就直接驗證是否存在。當在這種模式下,波浪線擴展將被應用。所以你能夠參考:~/personal_fabfile.py
ui
注:爲了訪問你的
fabfile
文件的內容, Fabric 作了一個正常的 import (實際是一個 import) – it does not do any eval-ing or similar. 爲了完成這個工做, Fabric 臨時把發現的 fabfile 文件的路徑添加進 Python 的加載路徑中 (而且而後當即移除了它).net
注:Changed in version 0.9.2: The ability to load package fabfiles命令行
由於 Fabric 是 Python 編寫的。你能夠以任何的你想的方式 import 它的組件。儘管如此,爲了封裝以及便利(使得更加容易的包裝 Fabric 的腳本),Fabric 的公共 API 是維護在 fabric.api
模塊中。code
全部的 Fabric 的 Operations, Context Managers, Decorators 和 Utils 被包含在這個模塊中,做爲一個單獨的標記命名空間。這可使你的 fabfiles 文件有一個至關簡單以及方便的接口調用。htm
from fabric.api import * # call run(), sudo(), etc etc
這不是最好的技術實踐(由於一些緣由),你僅僅是使用了一些 Fabric API 的調用。一個更好的方法是精確的使用 from fabric.api import env, run
或者是相似的方法。儘管如此,在大多數重要的 fabfiles ,你能夠經過使用 import
星號來使用全部的或者大部分的 API。
from fabric.api import *
主要包括以下:
from fabric.api import abort, cd, env, get, hide, hosts, local, prompt, \ put, require, roles, run, runs_once, settings, show, sudo, warn
在這個示例咱們感受到實用主義重寫了最佳實踐。