Shrinkwrap provides tools to create lightweight Python package wrappers around non-Python software, and to install such software from project-specific repositories using virtualenv and pip.
A shrinkwrap package is a minimal python package that downloads, compiles and installs software to the virtualenv base directory. The shrinkwrap package behaves just like a regular python package, so both shrinkwrap and non- shrinkwrap packages can be dependencies of each other. We find that this greatly simplifies deployment of Python packages that depend on compiled libraries without requiring the use of system-wide packaging tools, like apt or yum. Shrinkwrap is not an API wrapper generator like SWIG, but does make it easier to install C libraries into a virtualenv before installing a separate Python wrapper around its API.
Warning
To avoid cluttering PyPI with non-Python software, please do not ever upload shrinkwrap-generated packages there! Hosting shrinkwrap packages yourself is easy, and described further in Running your own package index.
Shrinkwrap is available on PyPI and can be installed via pip install shrinkwrap, easy_install shrinkwrap, or by downloading the package and installing with python setup.py install.
For those interested in the newest features should use the development version of shrinkwrap, available on bitbucket:
hg clone http://bitbucket.org/seibert/shrinkwrap
Note that you cannot directly install shrinkwrap from the Mercurial repository to a virtualenv with the pip -e command, as this appears to bypass our post- installation tasks. Running python setup.py install from the cloned repository is fine, however.