“Eggs are to Pythons as Jars are to Java…”
Python Eggs are zipfiles using the .egg extension, that support including data and C extensions as well as Python code. They can be used with Python 2.3 and up, and can be built using the setuptools package
The primary benefits of Python Eggs are:
- They enable tools like the “Easy Install” Python package manager (NEW!)
- They are a “zero installation” format for a Python package; no build or install step is required, just put them on PYTHONPATH or sys.path and use them
- They can include package metadata, such as the other eggs they depend on
- They allow “namespace packages” (packages that just contain other packages) to be split into separate distributions (e.g. zope.*, twisted.*, peak.* packages can be distributed as separate eggs, unlike normal packages which must always be placed under the same parent directory. This allows what are now huge monolithic packages to be distributed as separate components.)
- They allow applications or libraries to specify the needed version of a library, so that you can e.g. require(“Twisted-Internet>=2.0”) before doing an import twisted.internet.
- They’re a great format for distributing extensions or plugins to extensible applications and frameworks (such as Trac, which uses eggs for plugins as of 0.9b1), because the egg runtime provides simple APIs to locate eggs and find their advertised entry points (similar to Eclipse’s “extension point” concept).