2015-08-26 7 views
4

У меня есть Plone надстройки следующим setup.pyZCML между Zope2 и другим синцом * пакет

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="." /> 

Это вообще?

ответ

3

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

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

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

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

+1

Да! кажется, что он, хотя он не играет хорошо, если у вас есть какой-то громок, лежащий вокруг ... (я до сих пор не полностью избавился от него) – gforcada

+1

Избавьтесь от https://github.com/collective/ collect.z3cinspector - он помогает много узнать, какой компонент зарегистрирован и используется (также в каком пакете и т. д.), – Mathias