面料vs pexpect

问题描述:

我已经偶然发现了pexpect,我的印象是它看起来大致类似于fabric。我试图找到一些比较,没有成功,所以我在这里问 - 以防有人对这两种工具有经验。面料vs pexpect

我的印象(它们大致相当)是正确的,还是它在表面上的外观?

我用过两种。 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

两者都有不同的用例。布料所不具备的一点就是保持状态。每个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

您也可以将它们组合起来,能有两全其美的,面料远程访问的支持并提示处理提示。看看这些答案:https://stackoverflow.com/a/10007635/708221https://stackoverflow.com/a/9614913/708221