零件层次结构的构建配方

时间:2009-07-16 02:05:59

标签: python buildout

是否有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]
...

换句话说,我想要一个带有'parts'属性的配方,就像'buildout'部分一样,所以我可以手动管理一组零件的层次结构。

是的,我知道我可以这样做:

[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如何工作的基本知识,或者只是忽略了文档中的某些内容,这使得它更加清晰。

并且我不希望有一个平面层次结构,其中所有部分都列在'buildout'部分的'parts'属性中。

3 个答案:

答案 0 :(得分:1)

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

你为什么要这样?这并不像你最终得到数百个部件所以很难跟踪它们......

答案 1 :(得分:0)

前段时间我写了article on dependency resolution in buildout。它不是你问题的答案,因为我认为你想要的东西没有多大意义。但是,您可能会获得依赖性层次结构树解析扩展使用的见解。

答案 2 :(得分:0)

你可以这样做:

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

我理解正确吗?

它的工作原理是因为大多数buildout配置语句都只是列表。你可以互相追加。

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