Конфликт конфигурации ZCML между Zope2 и другим пакетом zope.*

У меня есть надстройка 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"
            />

Если я закомментирую zope.i18n от setup.py, запустите buildout снова, затем экземпляр запустится нормально.

Удивительно, но оба bin/instance файлы (до и после удаления zope.i18n) точно так же.

Так что я вроде ничего не понимаю о том, что неправильно определять что-то на setup.py что в любом случае выбирается та же версия...

Последнее замечание о распространении configure.zcml У меня есть эта строка:

<includeDependencies package="." />

Имеет ли это значение вообще?

1 ответ

Решение

Это кажется странным? очевидно, невозможно зарегистрировать дважды одну и ту же утилиту, но оба пакета делают? Я очень смущен этим. Обычно вам не нужны <includeDependencies package="." /> части, так как все компоненты должны быть загружены точкой входа Plone z3c.autoinclude, Я предполагаю, что в среде plone по умолчанию один из компонентов не будет загружен.

Я зарегистрировался на Plone 4.3.6... Переговорщик zope.i18n используется.

Так что мой лучший выбор в том, что ваш <includeDependencies package="." />также загружает файл configure.zcml Zope2, чего не должно быть.

Удаление <includeDependencies package="." />, может решить вашу проблему.

Другие вопросы по тегам