1

在我们的一些服务器上,collective.monkeypatch 不起作用:

    Unable to detect Zope version. Please make sure you have Zope 2.10.4 or newer installed.
    2011-03-24 10:17:13 ERROR collective.monkeypatcher Could not patch because version not recognized. Wanted: [2, 13, 9], Installed: []
    2011-03-24 10:17:13 INFO collective.monkeypatcher Preconditions for patching scope <class 'z3c.form.form.BaseForm'> not met (Zope2-=2.13.999)!
    2011-03-24 10:17:13 ERROR collective.monkeypatcher Could not patch because version not recognized. Wanted: [2, 13, 9], Installed: []
    2011-03-24 10:17:13 INFO collective.monkeypatcher Preconditions for patching scope <class 'z3c.form.group.GroupForm'> not met (Zope2-=2.13.999)!

我们已经在不同的计算机上尝试了一些构建,但无法提出可靠的模式为什么它会失败(可能是鸡蛋和版本 pindown 相关的东西)

可能是什么问题以及如何解决

4

2 回答 2

2

Unable to detect Zope version. Please make sure you have Zope 2.10.4 or newer installed.来自较旧的 Plone 版本(版本 3.0 及更早版本,已在 3.1 行中删除)。它使用旧式App.version_txt.getZopeVersionAPI 从 Zope2 模块目录中读取 version.txt 文件,但并不总是写入。在任何情况下,我都没有在使用 plone.recipe.zope2install 配方安装的 Zope2 安装中看到它。如果您确实使用 Zope 2.10.4 或更新版本,则此日志消息是无害的。

随着合适的 Zope2 egg 的出现,Plone 现在使用该pkg_resources模块进行此测试,并且在 Zope 2.12 中,getZopeVersionAPIpkg_resources也在内部使用。collective.monkeypatcher 前置条件测试也用于pkg_resources内省包版本。

从您的Unable to detect Zope version日志条目中,我推断您使用的是较旧的 Plone 版本(3.0 或更早版本),因此您很可能使用的是 Zope 2.10。Zope 2.10 不是鸡蛋,因此没有鸡蛋元数据可用于pkg_resources获取版本。因此,对于 2.12 之前的任何 Zope 版本,版本测试都失败了。

显而易见的解决方法是不要在 2.12 之前的 Zope 服务器上使用定义猴子补丁的包。plone.recipe.zope2install但是您也可以使用配方中包含的版本信息生成一个假鸡蛋:

[zope2]
recipe = plone.recipe.zope2install
...
additional-fake-eggs =
    Zope2 = 2.10.11

假鸡蛋为 pkg_resources 提供了足够的元数据以获取版本号,但 zope2install 配方写入了一个默认的 Zope2 假鸡蛋,版本为 0.0。通过使用版本号定义假鸡蛋,您最终会得到 pkg_resources 为您提供足够的信息来满足前提条件。您可能需要升级您的plone.recipe.zope2install版本,我看到一些重构和错误修复已应用于可能会影响您的假鸡蛋的生成方式。

于 2011-03-25T09:30:08.397 回答
-1

我认为问题出在preconditions你的 monkeypatch 指令的属性上。

请参阅http://pypi.python.org/pypi/collective.monkeypatcher上的文档

于 2011-03-24T14:04:50.273 回答