构建一个部件层次结构的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]
...
换句话说,我想要一个配方,它可以像'buildout'部分那样接受一个'parts'属性,这样我就可以手动管理一组部件的层级关系。
是的,我知道我可以这样做:
[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
你可以这样做:
[buildout]
development-tools-parts =
thing1
thing2
software-parts =
thing3
thing4
parts =
${buildout:development-tools-parts}
${buildout:software-parts}
我理解得对吗?
之所以能这样做,是因为大部分的构建配置语句其实就是一些列表。你可以把这些列表一个接一个地添加在一起。
我有时候会用这个方法来创建一个基本的构建配置文件(“base.cfg”),然后在这个基础上进行扩展。这样你就可以得到一个 ${buildout:common-parts}
,然后把它加到你的部分列表里,这样就能把一些标准的项目放进去。给你举个例子。
0
不久前,我写了一篇关于在buildout中解决依赖关系的文章。虽然这并不是你问题的答案,因为我觉得你想要的东西并没有太大意义。但你可能会对buildout使用的依赖关系层级树的解决方法有一些了解。
1
不,没有什么等级关系,当然你可以自己制定一个规则来管理它。
你为什么想要这个呢?其实你不会有成百上千个零件,所以管理起来并不难……