Wichert Akkerman wrote:
I wanted to share a bit of experience I just had with use of eggs in Zope2.
For a project I am working on I want to use the zope.sendmail package in
a Zope2 environment managed using buildout. I added zope.sendmail to the
eggs list in the buildout configuration and ran buildout. This pulled in
a large part of the Zope3 packages. This produced conflicts between those
packages and the ones included in Zope2 which resulted in a pretty boken

[snow;..stances/revelation]-84> bin/instance test -s zope.sendmail
Traceback (most recent call last):
  File "bin/instance", line 205, in ?
 line 154, in main
    c = AdjustedZopeCmd(options)
"/local/buildout/eggs/tmpCiQPa8/zdaemon-2.0a6-py2.4.egg/zdaemon/zdctl.py", line 
141, in __init__
AttributeError: 'dict' object has no attribute 'mapping'

You're dealing with two major problems here:

* It looks like zdaemon has changed in an incompatible way from whichever version your Zope 2 ships with (you don't mention your Zope 2 version, btw) to 2.0a6. That isn't the only problem, btw. The ZODB 3.8, which as likely been pulled in as an egg too, also contains a couple of incompatible changes.

* Many of the zope.* packages have way too many dependencies right now. I really hope that we can cut those inter-dependencies down so that easy_installing one of them doesn't get you the whole tree. For example, the zope.sendmail needs the ZODB for the 'transaction' package (it registers its own data managers), but it doesn't really need the ZODB. It only needs the common transaction mechanism. If that were available separately, for instance, upgrading to a newer egg would be much less disturbing.

Your wanting to upgrade zope.sendmail does re-iterate one of my points, though: That it *is* a valid use case to exchange a single package for a newer, improved version (as it is the case here). While having a well-defined distribution of Zope (that contains specific versions of all packages) is absolutely good to have, I think being able to upgrade certain eggs (when needed) is very valuable.

Adding zope.sendmail as a develop egg instead of a normal egg worked
fine though; no zope.* packages were pulled in by buildout and the
zope.sendmail unittests run flawlessly.

What do you mean by develop egg? Just a checkout? Or did you actually call setup.py develop, because that should also pull in dependencies.

http://worldcookery.com -- Professional Zope documentation and training
Zope-Dev maillist  -  Zope-Dev@zope.org
**  No cross posts or HTML encoding!  **
(Related lists - http://mail.zope.org/mailman/listinfo/zope-announce
http://mail.zope.org/mailman/listinfo/zope )

Reply via email to