Easy Install (http://peak.telecommunity.com/DevCenter/EasyInstall) From the documentation: "Easy Install is a python module (easy_install) bundled with setuptools that lets you automatically download, build, install, and manage Python packages." The Python Package Index (PyPI) is a great place to find python packages, and Easy Install will search there automatically, however you can also specify packages by url or (downloaded) filename. Easy Install puts the installed files (usually eggs) in python's site-packages folder. Installation Download ez_setup.py from (http://peak.telecommunity.com/dist/ez_setup.py) and run it with python ez_setup.py Check the easy_install documentation (http://peak.telecommunity.com/DevCenter/EasyInstall) for more information. Use Basic Installation: easy_install [Package Name] easy_install [URL of package - HTTP, FTP, SVN, or CVS] easy_install [location of downloaded package] Version Specifics: easy_install "[Package Name]==1.2" (This can also be used to change the 'active easy_install "[Package Name]>1.0" Upgrade Package: easy_install --upgrade [Package Name] Removing Packages: Use easy_install -m [Package Name] to remove the easy-install.pth entry for that package, so python has to look for the package manually, then delete the egg file from your site-packages directory. Wait, What Are Python Eggs? (http://peak.telecommunity.com/DevCenter/PythonEggs) From the documentation: "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." Basically, they're a folder, or a zipped folder, with your package and some meta-data to support installation Python Paste (http://pythonpaste.org/) Python Paste is.. well, there's no real useful quote I can give you here. I've actually never used paste outside of it's templating capability for new projects, so my basic understanding is that it's a standardized toolset for web applications built on the WSGI. Ian Bicking calls it WSGI middleware. (I should really look into this more, I was at one of the PyCons where they did a first sprint on WSGI) Well anyways, the part of Paster that I want to show you is 'paster create', which is a very useful way to make an empty project for yourself. This sets up all the egg metadata for you. You can even install paster create templates to make fancier setups. (like generic Plone projects) For information on making your own paster create template, see (http://docs.pythonweb.org/display/pylonscookbook/Creating+Templates+For+The+paster+create+Command) Install: easy_install Paste Basic Use: paster create The script will ask you lots and lots of meta data questions, answer or skip as you like, you can change or add information later. Changing Templates: paster create --list-templates for a list of what you have available paster create -t [Template Name] Cracking Open the Egg (at least, the paster create egg) +package+/setup.cfg #configuration settings for setuptools +package+/setup.py #the install script used by easy_install +package+/+package+/__init__.py #where all of your python code goes +package+/+package+.egg-info/PKG-INFO #Meta Data goes in here +package+/+package+.egg-info/SOURCES.txt #used when building source distros +package+/+package+.egg-info/dependency_links.txt +package+/+package+.egg-info/entry_points.txt +package+/+package+.egg-info/not-zip-safe #flag +package+/+package+.egg-info/paster_plugins.txt +package+/+package+.egg-info/top_level.txt Python Package Index So, you have your package directory setup correctly, your python code running, and you're ready to share with the world. This is also remarkably easy, going back to setuptools, which will automagically create distributions in the various formats, register your project with PyPI, and even upload it to PyPI for you. (they're not called tools for nothing) Just make sure that the meta-data in setup.py is filled out as much as possible, and that you have the right classifiers (http://pypi.python.org/pypi?%3Aaction=list_classifiers) and keywords, so people can find your package easily. Create a PyPI login, and save your username and password in a file called '.pypirc' in your home directory. The file should look like this: [server-login] username:Kusmeroglu password:mypassword Register your package with PyPI: python setup.py register Create a Source Distro and Upload: python setup.py sdist upload Create an Egg and Upload: python setup.py bdist_egg upload Do everything: python setup.py sdist bdist_egg upload Congratulations, you've unleashed your code on the world!