在我们的一些服务器上,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)!我们已经在不同的计算机上尝试了一些构建,但找不到可靠的模式来解释它失败的原因(可能是一些鸡蛋和版本标注相关的东西)
可能的问题是什么以及如何
发布于 2011-03-25 17:30:08
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.getZopeVersion API从Zope2模块目录读取version.txt文件,但并不总是这样写的。在任何情况下,我都没有在与plone.recipe.zope2install配方一起安装的Zope2安装中看到它。如果你使用的是Zope 2.10.4或更高版本,这个日志消息是无害的。
随着一个合适的Zope2鸡蛋的出现,Plone现在使用pkg_resources模块进行测试,在Zope2.12中,getZopeVersion应用编程接口也在内部使用pkg_resources。collective.monkeypatcher前提条件测试还使用pkg_resources自检程序包版本。
从您的Unable to detect Zope version日志条目中,我推断您使用的是较旧的Plone版本(3.0或更早),因此您最有可能使用的是Zope2.10。Zope2.10不是一个鸡蛋,所以pkg_resources没有鸡蛋元数据来获取版本。因此,对于2.12之前的任何Zope版本,版本测试都会失败。
显而易见的变通办法是在早于2.12的Zope服务器上不使用定义monkeypatch的包。但您也可以使用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-24 22:04:50
我认为问题出在您的monkeypatch指令的preconditions属性中。
请参阅http://pypi.python.org/pypi/collective.monkeypatcher上的文档
https://stackoverflow.com/questions/5417736
复制相似问题