面料vs pexpect
问题描述:
我已经偶然发现了pexpect,我的印象是它看起来大致类似于fabric。我试图找到一些比较,没有成功,所以我在这里问 - 以防有人对这两种工具有经验。面料vs pexpect
我的印象(它们大致相当)是正确的,还是它在表面上的外观?
答
两者都有不同的用例。布料所不具备的一点就是保持状态。每个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/708221和https://stackoverflow.com/a/9614913/708221
我同意乔恩。我曾经使用pexpect,但现在执行这些任务与面料和偶尔http://classespeak.net/execnet/ – 2010-11-17 00:47:28
感谢您的答案! – 2010-11-17 13:22:40
“这取决于你使用的是什么”,有没有一个领域可以胜过面料? – osmosis 2012-01-15 02:38:55