2011-03-24 40 views
1

在我們的一些服務器collective.monkeypatch不起作用:collective.monkeypatch未能檢測到Zope的版本(z3c.form)

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相關)

可能是什麼問題以及如何

回答

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.getZopeVersion API從Zope2模塊目錄中讀取version.txt文件,但這並不總是被寫入。在任何情況下,我都沒有在安裝了plone.recipe.zope2install配方的Zope2安裝中看到它。如果您使用Zope 2.10.4或更高版本,則此日誌消息無害。

以適當的Zope2蛋的出現,Plone的現在使用pkg_resources模塊,使這個測試和Zope的2.12 getZopeVersion API使用pkg_resources內部也是如此。 collective.monkeypatcher precondition測試也使用pkg_resources來反思包的版本。

從你的Unable to detect Zope version日誌條目我推斷你使用的是較老的Plone版本(3.0或更舊),因此你很可能使用Zope 2.10。 Zope 2.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版本,我看到一些重構和錯誤修復已應用於可能會影響您的假雞蛋的生成方式。