2010-11-16 42 views
15

我已經偶然發現了pexpect,我的印象是它看起來大致類似於fabric。我試圖找到一些比較,沒有成功,所以我在這裏問 - 以防有人對這兩種工具有經驗。面料vs pexpect

我的印象(它們大致相當)是正確的,還是它在表面上的外觀?

回答

14

我用過兩種。 Fabric比pexpect更高級別,恕我直言更好。這取決於你使用的是什麼,但如果你的使用是軟件的部署和配置,那麼Fabric是正確的選擇。

+1

我同意喬恩。我曾經使用pexpect,但現在執行這些任務與面料和偶爾http://classespeak.net/execnet/ – 2010-11-17 00:47:28

+0

感謝您的答案! – 2010-11-17 13:22:40

+1

「這取決於你使用的是什麼」,有沒有一個領域可以勝過面料? – osmosis 2012-01-15 02:38:55

4

兩者都有不同的用例。布料所不具備的一點就是保持狀態。每個Fabric api命令(例如:run/sudo)都是它自己的單獨命令。所以,如果你這樣做:

run("cd project_dir && workon project") 
run("make") 

這將不會在該目錄中,也不會在virtualenv。雖然現在在Fabric中有cd()的上下文管理器,但它們或多或少都會在每次運行前預先配置cd。

在這個事情的計劃中,這對大多數項目的工作方式沒有什麼影響,而且基本上沒有被注意到。但是,對於某些需求,您可以使用pexpect來管理此狀態,多個sudos或某些不能用標誌自動執行的交互式任務。

所有這些雖然不是Fabric的缺點,因爲它只是python,你不僅可以在fabric任務中包含pexpect代碼。

儘管在所有其他方面,Fabric基本上都管理着遠程連接和運行命令的所有艱苦工作,比從頭到尾編寫代碼更好。

更新我被告知,用布和pexepect工作的項目,你可以看到更多關於這個question's answer