Fabric和Pexpect的区别

16

我偶然发现了pexpect,我的印象是它看起来与fabric大致相似。我尝试了一下寻找比较,但没有成功,因此在这里询问 - 万一有人对这两个工具都有经验。

我的印象(它们大致等价)是正确的吗,还是只是外表看起来如此?

3个回答

15

我两个都用过。 Fabric 比pexpect更高级,而且在我看来要好得多。这取决于你使用它的目的,但是如果你使用它来部署和配置软件,则 Fabric 是正确的选择。


1
我同意Jon的观点。我的确曾经使用过pexpect,但现在用fabric执行这些任务,偶尔也会使用http://codespeak.net/execnet/。 - Jeff Bauer
1
"这取决于你使用它的用途," pexpect在哪些方面胜过fabric? - osmosis
2
@osmosis 是的,Fabric 无法自动化用户交互,即远程命令行提示。 - Jasper van den Bosch

6

5

两者都有不同的用途。 Pexpect可以保留状态,而Fabric则不能。每个Fabric API命令(例如:run / sudo)都是单独的命令。因此,如果您执行以下操作:

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

这不会在该目录中,也不会在虚拟环境中。虽然现在Fabric中有用于cd()的上下文管理器,但它们更多地是在每次运行时添加一个cd。

在项目工作的大局中,这对于大多数项目的工作方式几乎没有影响,基本上不会被注意到。但是,对于某些需要,您可能会使用pexpect来管理此状态,例如多个sudo或某种无法使用标志自动化的交互式任务。

尽管如此,这并不是Fabric的缺点,因为它只是Python,您完全可以在fabric任务中包含pexpect代码。

不过,在所有其他方面,Fabric比从头开始编写pexpect代码更好地管理远程连接和运行命令的所有艰苦工作。

更新 我已经被告知有一个与Fabric和pexepect一起使用的项目,您可以在此问题的答案中了解更多信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接