[Zope-dev] Product installation (implicit vs. explicit)

Chris McDonough chrism at plope.com
Thu Dec 22 09:09:02 EST 2005


I'm looking for opinions here..

The next major Zope 2 release and perhaps the next major Zope 3  
release will support the loading of packages and (for Zope 2)  
Products from Python "Egg" files.  See http://peak.telecommunity.com/ 
DevCenter/PythonEggs for an overview.

This provides the following benefits:

  - A packaging pattern that includes standardized metadata which  
extends
    existing distutils patterns.

  - A mechanism to find "certain kinds" of packages (via egg "entry  
points").
    This is important for Zope 2 because it means we can make the use of
    the Products package namespace optional.. Products needn't be
    installed into "Products" IOW.

  - Simpler installation (more than one product can exist in a single
    egg file).

  - Dependencies between "distributions" (different egg files) may exist
    within the standard metadata, and the egg loading machinery can
    detect whether a dependency is missing.

  - Egg products can be registered with online catalogs like Cheese  
Shop, etc
    very simply.

A "spike solution" for egg support in Zope 2 in the form of a product  
named "Basket" (http://www.plope.com/software/Basket/Basket) already  
exists.  By doing this, we know a lot more about what it will take to  
put egg support "in to the core".

Currently, the Basket product makes the following important assumptions:

- There should be no explicit installation step for eggs other than
   placing the egg on somewhere on Zope's PYTHONPATH.

- Packagers can mark their distributions as "non-zip-safe", which causes
   Basket to automatically unpack the egg file into disk files in a  
cache
   directory when Zope starts.  This is important for existing  
products that
   expect some of their data files to be on disk and not in the egg  
zipfile.

The progenitor of Eggs (Phillip Eby) suggests that this is too  
implicit.  He suggests instead that people who install packages  
should use a program which implicitly installs packages.  The major  
difference between this and what happens in Basket currently is that  
packages would be that non-zip-safe packages would be "exploded" at  
installation time rather than at Zope startup time.

The question is this: do you think there should be an explicit  
"install" step for egg packages/Products or do you think it should be  
possible to just put eggs on your PYTHONPATH (and perhaps adjust a  
config file with "requirements")?


More information about the Zope-Dev mailing list