[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