用于添加缺失接口的 Monkey 补丁
Monkey patch to add a missing interface
如何使用collective.monkeypatcher在someproduct
中添加IFooBar
?
这是我试过的,但它是错误的(因为IFooBar
在原始产品中不存在。)
<monkey:patch description="Create missing FooBar interface"
class="someproduct.interfaces.IFooBar"
original="IFooBar"
replacement="myproduct.patches.IFooBar"
docstringWarning="true" />
错误是ConfigurationError: ('Invalid value for', 'class', 'ImportError: Module someproduct.interfaces has no global IFooBar')
。
我的最终目标是跳过此错误:PicklingError: Can't pickle <class 'someproduct.interfaces.IFooBar'>: attribute lookup someproduct.interfaces.IFooBar failed
在我尝试激活/停用加载项时收到。
这是因为我安装了新版本的 someproduct
有 IFooBar
,然后我恢复到旧版本(没有 IFooBar
)没有卸载插件-上。
更新:
替换行:
class="someproduct.interfaces.IFooBar"
和
class="someproduct.interfaces"
这是一回事。错误:
ConfigurationError: Original IFooBar in <module 'someproduct.interfaces' from '/plone/buildout-cache/eggs/someproduct-1.2-py2.7.egg/some/path/interfaces.pyc'> not found
.
哦。只需添加:ignoreOriginal="true"
如何使用collective.monkeypatcher在someproduct
中添加IFooBar
?
这是我试过的,但它是错误的(因为IFooBar
在原始产品中不存在。)
<monkey:patch description="Create missing FooBar interface"
class="someproduct.interfaces.IFooBar"
original="IFooBar"
replacement="myproduct.patches.IFooBar"
docstringWarning="true" />
错误是ConfigurationError: ('Invalid value for', 'class', 'ImportError: Module someproduct.interfaces has no global IFooBar')
。
我的最终目标是跳过此错误:PicklingError: Can't pickle <class 'someproduct.interfaces.IFooBar'>: attribute lookup someproduct.interfaces.IFooBar failed
在我尝试激活/停用加载项时收到。
这是因为我安装了新版本的 someproduct
有 IFooBar
,然后我恢复到旧版本(没有 IFooBar
)没有卸载插件-上。
更新:
替换行:
class="someproduct.interfaces.IFooBar"
和
class="someproduct.interfaces"
这是一回事。错误:
ConfigurationError: Original IFooBar in <module 'someproduct.interfaces' from '/plone/buildout-cache/eggs/someproduct-1.2-py2.7.egg/some/path/interfaces.pyc'> not found
.
哦。只需添加:ignoreOriginal="true"