4

在我的一个项目的 buildout.cfg 文件中,我有这样的内容:

[buildout]
...
zcml =
    my.package
    plone.reload
...

一切正常,但我仍然对某些软件包确实需要在此处列出的原因以及其他软件包不列出的原因感到困惑。

开始的目的是什么?

在做一些研究时,我最终在https://pypi.python.org/pypi/munin.zope/2.1上说如果你使用 z3c.autoinclude 和 plone (+3.3) 你不需要它

这是否意味着如果一个发行版上有 z3c.autoinclude slug setup.py,即

entry_points="""
# -*- Entry points: -*-
[z3c.autoinclude.plugin]
target = plone
""",

你不用关心buildout:zcml吗?

4

2 回答 2

5

[buildout] 部分中没有与参数相关的固有功能zcml,除了一个方便的位置来定义zcml.

通常,[instance] 部分将引用它:

[instance]
recipe = plone.recipe.zope2instance
eggs = Plone
zcml = ${buildout:zcml}

使用buildout:zcml类似buildout:eggs是一种反模式,IMO

于 2015-05-21T02:39:54.877 回答
1

在构建配置文件中,name=value可以通过两种方式使用:

  • 为具有预定义功能的名称指定一个值
  • 为值分配名称以避免复制和粘贴。

buildout:zcml是第二种情况的一个例子。

换句话说,使用的唯一理由buildout:zcml是需要在不同的地方使用它的价值。

但是,当我需要重用时zcml,我宁愿将它定义在一个plone.recipe.zope2instance部分中。并在另一部分重用该值。

于 2015-06-07T22:02:04.980 回答