【问题标题】:Buildout recipe for a hierarchy of parts零件层次结构的构建配方
【发布时间】:2010-11-11 05:28:46
【问题描述】:

是否有 Python buildout 配方允许以下操作:

[buildout]
parts = group-of-parts

[group-of-parts]
recipe = what.can.i.use.for.this
parts = part-1 part-2

[part-1]
...

[part-2]
...

换句话说,我想要一个带有“部件”属性的配方,就像“构建”部分一样,这样我就可以手动管理部件组的层次结构。

是的,我知道我可以做到:

[buildout]
parts = group-of-parts

[group-of-parts]
recipe =
parts = ${part-1:recipe} ${part-2:recipe}

[part-1]
...

[part-2]
...

但是依赖于通过引用它们的属性来构建部件的副作用似乎有点模糊。我宁愿通过使用只允许列出部件本身名称的配方来更明确。

当然,在扩展和覆盖时,它看起来更简洁:

[groups-of-parts]
parts -= part-2

比:

[groups-of-parts]
parts -= ${part-2:recipe}

或者是我的问题是我只是错过了一些关于构建如何工作的基本知识,或者只是忽略了文档中的某些内容,这使得这变得更加清晰。

不,我不希望有一个扁平的层次结构,其中所有部分都列在“buildout”部分的“parts”属性中。

【问题讨论】:

    标签: python buildout


    【解决方案1】:

    不,没有层次结构,当然你可以为它建立一个配方。

    你为什么想要它?并不是说您最终会得到数百个零件,因此很难跟踪它们...

    【讨论】:

    • 封装和隐藏做某事所需的内部细节的能力。它还有助于可维护性,尤其是当您确实有很多部分或一个动作需要组合多个配方来做某事时。如果许多其他食谱的组合可以完成同样的工作,为什么还要去创建一个特殊用途的食谱/鸡蛋来隐藏步骤。这只是面向对象概念的常识应用,可以更轻松地重用组件。就我目前所见,这是buildbot有点欠缺的领域。
    • Buildout 不是面向对象的编程语言。我大量使用它,但还没有看到封装或重用组件对我有意义的案例。也就是说你可以扩展脚本,所以我想你可以为不同的部分制作单独的脚本,然后制作一个扩展其他部分的主要脚本。我怀疑这会让任何事情变得更清楚。这在 Plone 世界中很常见,您通常在其中进行基础构建,然后进行生产和开发构建。
    【解决方案2】:

    前段时间我写了一个article on dependency resolution in buildout。它不是您问题的答案,因为在我看来,您想要的东西没有多大意义。但是您可能会深入了解依赖层次结构树解析构建的用途。

    【讨论】:

      【解决方案3】:

      你可以这样做:

      [buildout]
      development-tools-parts =
          thing1
          thing2
      software-parts =
          thing3
          thing4
      parts =
          ${buildout:development-tools-parts}
          ${buildout:software-parts}
      

      我理解正确吗?

      之所以有效,是因为大多数构建配置语句只是列表。您可以相互附加。

      我有时将它用于我将扩展的基本构建配置(“base.cfg”)。这将为您提供${buildout:common-parts},您可以将其添加到您的零件清单中以获取其中的几个标准项目。只是给你一个例子。

      【讨论】:

      • 大概我可以使用我原来的例子,只是有'parts=${groups-of-paths:parts}'。这会将这些部件列表放入一个单独的部分,而不是在构建部分本身,这是我试图做的重点之一。这是因为 group-of-parts 部分实际上是在一个单独的构建文件中,该文件正在扩展。因此试图将多个文件中发生的事情汇总在一起,并希望在这些文件中指定列表,而不必在顶级文件中重复。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-09
      • 2023-03-21
      • 1970-01-01
      • 2017-04-18
      • 2017-09-25
      • 1970-01-01
      相关资源
      最近更新 更多