Eggs and Buildout Deployment in Python
Figure 1: Data Flow within Distutils/Setuptools Usage
Slides:
Four-Part In-Depth Presentation Sequence (not presented in class)
- An Introduction to the Virtualenv Sandbox (.pdf, .txt)
- Distutils: Packaging, Metadata and Pushups (.pdf, .txt)
- SetupTools: Python Eggs, Dependencies and Plugins (.pdf, .txt)
- Buildout: Precision Assembly, Repeatability, Islands (.pdf, .txt)
Condensed Slide Set Used in Actual Tutorial
Exercises from Tutorial:
Installing Tools for the Class
$ cd /tmp$ sudo python ez_setup.py$ sudo easy_install virtualenv$ sudo easy_install zc.buildoutInstantiating a Sandbox or Two
$ virtualenv pycon -or-$ virtualenv --no-site-packages pycon$ cd pycon$ bin/python$ source bin/activate -or- activate.bat$ deactivate
- explore:
- directory tree
- sys.path
- for each kind of sandbox
Processing Distributions
Grab a source distribution
$ /sandbox/bin/easy_install --editable --build-directory . SQLObject==0.9.5$ /sandbox/bin/easy_install --editable --build-directory . SQLObject==devExamine its directory structure and common files.
Query the list of available distribution formats.
$ cd sqlobject$ /sandbox/bin/python setup.py sdist --help-formats$ /sandbox/bin/python setup.py bdist --help-formatsBuild and package it as a binary distribution.
$ /sandbox/bin/python setup.py build$ /sandbox/bin/python setup.py install$ /sandbox/bin/python setup.py bdist --formats=tar,egg,rpmExamine the run output and the table-of-contents of the distribution archive afterward. Note the way that metadata is stored.
Repackage it as a source distribution
$ /sandbox/bin/python setup.py sdist --formats=zipExamine the run output and the table-of-contents of the source archive. Note the different way that metadata is stored.
Try to import it, then run the "develop" cmd and try again.
$ cd /sandbox$ /sandbox/bin/python$ import sqlobject$ cd /sandbox/sqlobject$ /sandbox/bin/python setup.py developGenerating Scripts that Invokes Entrypoints
Create a sandbox in which to work.
$ virtualenv --no-site-packages pycon$ cd pyconCreate a distribution for a new egg that has two scripts.
# File: pycon/setup.pyfrom setuptools import setup
