What are the advantages of packaging your python library/application as an .egg file?
<p>I've read some about .egg files and I've noticed them in my lib directory but what are the advantages/disadvantages of using then as a developer?</p>

<p>From the <a href="http://peak.telecommunity.com/DevCenter/PythonEggs">Python Enterprise Application Kit community</a>:</p>

<blockquote>
  <p><em>"Eggs are to Pythons as Jars are to Java..."</em></p>
  
  <p>Python eggs are a way of bundling
  additional information with a Python
  project, that allows the project's
  dependencies to be checked and
  satisfied at runtime, as well as
  allowing projects to provide plugins
  for other projects. There are several
  binary formats that embody eggs, but
  the most common is '.egg' zipfile
  format, because it's a convenient one
  for distributing projects. All of the
  formats support including
  package-specific data, project-wide
  metadata, C extensions, and Python
  code.</p>
  
  <p>The primary benefits of Python Eggs
  are:</p>
  
  <ul>
  <li><p>They enable tools like the "Easy Install" Python package manager</p></li>
  <li><p>.egg files 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 (may require
  the runtime installed if C extensions
  or data files are used)</p></li>
  <li><p>They can include package metadata, such as the other eggs they depend on</p></li>
  <li><p>They allow "namespace packages" (packages that just contain other
  packages) to be split into separate
  distributions (e.g. zope.<em>, twisted.</em>,
  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.)</p></li>
  <li><p>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.</p></li>
  <li><p>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).</p></li>
  <li><p>There are also other benefits that may come from having a standardized
  format, similar to the benefits of
  Java's "jar" format.</p></li>
  </ul>
</blockquote>


