【问题标题】:fabric vs pexpect织物与预期
【发布时间】:2010-11-16 23:56:30
【问题描述】:

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

我的印象(它们大致相当)是正确的,还是只是表面上的样子?

【问题讨论】:

    标签: python fabric pexpect


    【解决方案1】:

    我都用过。 Fabric 比 pexpect 级别更高,恕我直言,要好得多。这取决于您使用它的目的,但如果您的用途是部署和配置软件,那么 Fabric 是正确的选择。

    【讨论】:

    • 我同意乔恩的观点。我曾经使用 pexpect,但现在使用 fabric 执行这些任务,偶尔使用codespeak.net/execnet
    • “这取决于你用它做什么”,pexpect 有没有比面料更胜一筹的地方?
    • @osmosis 是的,fabric 不能自动化用户交互,即远程命令行提示。
    【解决方案2】:

    您还可以将它们结合起来,以获得两全其美的效果,即织物远程处理功能和对提示的预期处理。看看这些答案:https://stackoverflow.com/a/10007635/708221https://stackoverflow.com/a/9614913/708221

    【讨论】:

      【解决方案3】:

      两者都有不同的用例。 Fabric 没有做到的事情是保持状态。每个 Fabric api 命令(例如:run/sudo)都是它自己的单独命令。所以如果你这样做:

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

      它不会在那个目录中,也不会在 virtualenv 中。虽然现在 Fabric 中有 cd() 的上下文管理器,但它们或多或少地在每次运行之前都添加了 cd。

      在事物的计划中,这与大多数项目的工作方式几乎没有关系,并且基本上没有被注意到。但是,对于某些需求,您可能会使用 pexpect 来管理此状态,用于多个 sudo 或某种无法使用标志自动执行的交互式任务。

      所有这一切都不是 Fabric 的缺点,因为它只是 python,你完全可以在 Fabric 任务中包含 pexpect 代码。

      尽管在所有其他方面,Fabric 基本上管理远程连接和运行命令的所有繁重工作,比使用 pexpect 从头开始​​编写代码更好。

      更新我得知有一个项目可以使用 Fabric 和 pexepect,您可以在 question's answer 上查看更多信息

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-06-24
        • 1970-01-01
        • 1970-01-01
        • 2019-08-12
        • 2016-12-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多