2015-08-26 1 views
4

J'ai un add-on Plone avec les éléments suivants setup.pyconfiguration ZCML conflit entre Zope2 et un autre paquet Zope *

setup(
    ... 
    install_requires=[ 
     ... 
     'zope.i18n', 
     ... 
     'Zope2', 
    ], 
    ... 
) 

Si je cours bin/instance je reçois le retraçage suivant:.

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

Si je commente zope.i18n de setup.py, réexécutez buildout, puis l'instance démarre correctement.

De façon surprenante, les deux bin/instance fichiers (avant et après la suppression zope.i18n) sont exactement même.

Je suis un peu laissé la moindre idée de ce qui ne va pas sur la définition de quelque chose setup.py que de toute façon la même version est ramassé ...

Dernière note, sur la principale configure.zcml de la distribution que j'ai cette ligne:

<includeDependencies package="." /> 

Est-ce que cela compte?

Répondre

3

Cela semble étrange ?? évidemment, il n'est pas possible d'enregistrer deux fois le même utilitaire, mais les deux paquets le font? Je suis très confus à ce sujet. Habituellement, vous n'avez pas besoin des pièces <includeDependencies package="." />, puisque tous les composants doivent être chargés par le point d'entrée Plone de z3c.autoinclude. Je suppose que dans un environnement plone par défaut, l'un des composants ne sera pas chargé. J'ai vérifié sur un Plone 4.3.6 ... Le Négociateur de zope.i18n est utilisé.

Donc, mon meilleur pari est, que votre <includeDependencies package="." />, charge également le configure.zcml de Zope2, ce qui ne devrait pas arriver.

Enlever le <includeDependencies package="." />, peut résoudre votre problème.

+1

Oui! semble l'être, bien que ça ne joue pas bien si vous avez du grok qui traîne ... (je ne m'en suis toujours pas complètement débarrassé) – gforcada

+1

Débarrassez-vous en utilisant le https://github.com/collective/ collective.z3cinspector - cela aide beaucoup à découvrir, quel composant est enregistré et utilisé (aussi dans quel paquet, etc.) – Mathias