4

是否有允许以下内容的 Python构建配方:

[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}

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

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

4

3 回答 3

1

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

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

于 2009-07-16T07:33:57.517 回答
0

你可以这样做:

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

我理解正确吗?

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

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

于 2011-09-07T01:31:58.660 回答
0

前段时间我在 buildout 中写了一篇关于依赖解析的文章。它不是您问题的答案,因为在我看来,您想要的东西没有多大意义。但是您可能会深入了解依赖层次树解析构建使用。

于 2011-09-06T20:50:49.293 回答