我在下面的setup.py中添加了一个Plone插件
setup(
...
install_requires=[
...
'zope.i18n',
...
'Zope2',
],
...
)如果运行bin/instance,就会得到以下跟踪:
File ".buildout/eggs/zope.configuration-3.7.4-py2.7.egg/zope/configuration/config.py", line 1527, in resolveConflicts
raise ConfigurationConflictError(conflicts)
zope.configuration.config.ConfigurationConflictError: Conflicting configuration actions
For: ('utility', <InterfaceClass zope.i18n.interfaces.INegotiator>, '')
File ".buildout/eggs/zope.i18n-3.7.4-py2.7.egg/zope/i18n/configure.zcml", line 3.2-6.8
<utility
provides="zope.i18n.interfaces.INegotiator"
component="zope.i18n.negotiator.negotiator"
/>
File ".buildout/eggs/Zope2-2.13.22-py2.7.egg/ZPublisher/i18n.zcml", line 5.2-8.8
<utility
provides="zope.i18n.interfaces.INegotiator"
component="zope.i18n.negotiator.negotiator"
/>如果我从zope.i18n中注释掉setup.py,再次运行buildout,那么实例就可以正常启动了。
令人惊讶的是,两个bin/instance文件(在删除zope.i18n之前和之后)都是完全相同的。
所以我对在setup.py上定义同样版本的东西有什么不对的地方一无所知.
最后,在发行版的主configure.zcml上,我有以下一行:
<includeDependencies package="." />这有关系吗?
发布于 2015-08-26 12:09:56
这听起来很奇怪?显然,注册同一实用程序两次是不可能的,但是这两个包都可以吗?我对此很困惑。通常不需要<includeDependencies package="." />部件,因为所有组件都应该由z3c.autoinclude的plone入口点加载。我假设在默认的plone环境中,其中一个组件将不会被加载。
我查了一个4.3.6.使用了zope.i18n的谈判者。
因此,我最好的选择是,您的<includeDependencies package="." />也加载configure.zcml of Zope2,这是不应该发生的。
删除<includeDependencies package="." />,可以解决您的问题。
https://stackoverflow.com/questions/32224255
复制相似问题