<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>

[{'answer_id': 47956, 'author': 'Adam Davis', 'author_id': 2915, 'author_profile': 'https://Stackoverflow.com/users/2915', 'pm_score': 6, 'selected': True, 'text': '<p>From the <a href="http://peak.telecommunity.com/DevCenter/PythonEggs" rel="noreferrer">Python Enterprise Application Kit community</a>:</p>\n\n<blockquote>\n  <p><em>"Eggs are to Pythons as Jars are to Java..."</em></p>\n  \n  <p>Python eggs are a way of bundling\n  additional information with a Python\n  project, that allows the project\'s\n  dependencies to be checked and\n  satisfied at runtime, as well as\n  allowing projects to provide plugins\n  for other projects. There are several\n  binary formats that embody eggs, but\n  the most common is \'.egg\' zipfile\n  format, because it\'s a convenient one\n  for distributing projects. All of the\n  formats support including\n  package-specific data, project-wide\n  metadata, C extensions, and Python\n  code.</p>\n  \n  <p>The primary benefits of Python Eggs\n  are:</p>\n  \n  <ul>\n  <li><p>They enable tools like the "Easy Install" Python package manager</p></li>\n  <li><p>.egg files are a "zero installation" format for a Python\n  package; no build or install step is\n  required, just put them on PYTHONPATH\n  or sys.path and use them (may require\n  the runtime installed if C extensions\n  or data files are used)</p></li>\n  <li><p>They can include package metadata, such as the other eggs they depend on</p></li>\n  <li><p>They allow "namespace packages" (packages that just contain other\n  packages) to be split into separate\n  distributions (e.g. zope.<em>, twisted.</em>,\n  peak.* packages can be distributed as\n  separate eggs, unlike normal packages\n  which must always be placed under the\n  same parent directory. This allows\n  what are now huge monolithic packages\n  to be distributed as separate\n  components.)</p></li>\n  <li><p>They allow applications or libraries to specify the needed\n  version of a library, so that you can\n  e.g. require("Twisted-Internet>=2.0")\n  before doing an import\n  twisted.internet.</p></li>\n  <li><p>They\'re a great format for distributing extensions or plugins to\n  extensible applications and frameworks\n  (such as Trac, which uses eggs for\n  plugins as of 0.9b1), because the egg\n  runtime provides simple APIs to locate\n  eggs and find their advertised entry\n  points (similar to Eclipse\'s\n  "extension point" concept).</p></li>\n  <li><p>There are also other benefits that may come from having a standardized\n  format, similar to the benefits of\n  Java\'s "jar" format.</p></li>\n  </ul>\n</blockquote>\n\n<p>-Adam</p>\n'}, {'answer_id': 47957, 'author': 'cschol', 'author_id': 2386, 'author_profile': 'https://Stackoverflow.com/users/2386', 'pm_score': 2, 'selected': False, 'text': '<p>.egg files are basically a nice way to deploy your python application. You can think of it as something like .jar files for Java. </p>\n\n<p>More info <a href="http://peak.telecommunity.com/DevCenter/PythonEggs" rel="nofollow noreferrer">here</a>.</p>\n'}, {'answer_id': 47958, 'author': 'Jason Baker', 'author_id': 2147, 'author_profile': 'https://Stackoverflow.com/users/2147', 'pm_score': 2, 'selected': False, 'text': "<p>Eggs are a pretty good way to distribute python apps.  Think of it as a platform independent .deb file that will install all dependencies and whatnot.  The advantage is that it's easy to use for the end user.  The disadvantage are that it can be cumbersome to package your app up as a .egg file.</p>\n\n<p>You should also offer an alternative means of installation in addition to .eggs.  There are some people who don't like using eggs because they don't like the idea of a software program installing whatever software it wants.  These usually tend to be sysadmin types.</p>\n"}, {'answer_id': 137903, 'author': 'pupeno', 'author_id': 6068, 'author_profile': 'https://Stackoverflow.com/users/6068', 'pm_score': 1, 'selected': False, 'text': '<p>Whatever you do, do not stop distributing your application, also, as a tarball, as that is the easiest packagable format for operating systems with a package sysetem.</p>\n'}, {'answer_id': 138090, 'author': 'crystalattice', 'author_id': 18676, 'author_profile': 'https://Stackoverflow.com/users/18676', 'pm_score': 1, 'selected': False, 'text': '<p>For simple Python programs, you probably don\'t need to use eggs. Distributing the raw .py files should suffice; it\'s like distributing source files for GNU/Linux. You can also use the various OS "packagers" (like py2exe or py2app) to create .exe, .dmg, or other files for different operating systems.</p>\n\n<p>More complex programs, e.g. Django, pretty much require eggs due to the various modules and dependencies required.</p>\n'}, {'answer_id': 197811, 'author': 'Reinout van Rees', 'author_id': 27401, 'author_profile': 'https://Stackoverflow.com/users/27401', 'pm_score': 3, 'selected': False, 'text': '<p>One egg by itself is not better than a proper source release. The good part is the dependency handling. Like debian or rpm packages, you can say you depend on other eggs and they\'ll be installed automatically (through <a href="http://pypi.python.org" rel="noreferrer">pypi.python.org</a>).</p>\n\n<p>A second comment: the egg format itself is a binary packaged format. Normal python packages that consist of just python code are best distributed as "source releases", so "python setup.py sdist" which result in a .tar.gz. These are also commonly called "eggs" when uploaded to pypi.</p>\n\n<p>Where you need binary eggs: when you\'re bundling some C code extension. You\'ll need several binary eggs (a 32bit unix one, a windows one, etc.) then.</p>\n'}]
['https://Stackoverflow.com/questions/47953', 'https://Stackoverflow.com', 'https://Stackoverflow.com/users/4491/']