Zope2 和另一个 zope.* 包之间的 ZCML 配置冲突
ZCML configuration conflict between Zope2 and another zope.* package
我有一个 Plone 附加组件 setup.py
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"
/>
如果我从 setup.py
中注释掉 zope.i18n
,再次 运行 buildout,那么实例将正常启动。
令人惊讶的是,两个 bin/instance
文件(删除 zope.i18n
之前和之后)完全 相同。
所以我对在 setup.py
上定义的东西有什么问题一无所知,无论如何都选择了相同的版本...
最后一点,在发行版的主要部分 configure.zcml
我有这一行:
<includeDependencies package="." />
这有关系吗?
这似乎很奇怪??显然不可能对同一个实用程序进行两次注册,但是两个包都可以吗?我对此很困惑。通常你不需要 <includeDependencies package="." />
部分,因为所有组件都应该由 z3c.autoinclude
的 plone 入口点加载。我假设在默认的 plone 环境中,不会加载其中一个组件。
我签到的是Plone 4.3.6...使用的是zope.i18n的Negotiator
所以我最好的选择是,您的 <includeDependencies package="." />
还加载了 Zope2 的 configure.zcml,这不应该发生。
删除 <includeDependencies package="." />
,可能会解决您的问题。
我有一个 Plone 附加组件 setup.py
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"
/>
如果我从 setup.py
中注释掉 zope.i18n
,再次 运行 buildout,那么实例将正常启动。
令人惊讶的是,两个 bin/instance
文件(删除 zope.i18n
之前和之后)完全 相同。
所以我对在 setup.py
上定义的东西有什么问题一无所知,无论如何都选择了相同的版本...
最后一点,在发行版的主要部分 configure.zcml
我有这一行:
<includeDependencies package="." />
这有关系吗?
这似乎很奇怪??显然不可能对同一个实用程序进行两次注册,但是两个包都可以吗?我对此很困惑。通常你不需要 <includeDependencies package="." />
部分,因为所有组件都应该由 z3c.autoinclude
的 plone 入口点加载。我假设在默认的 plone 环境中,不会加载其中一个组件。
我签到的是Plone 4.3.6...使用的是zope.i18n的Negotiator
所以我最好的选择是,您的 <includeDependencies package="." />
还加载了 Zope2 的 configure.zcml,这不应该发生。
删除 <includeDependencies package="." />
,可能会解决您的问题。