Tools of the Modern Python Hacker: Virtualenv, Fabric and Pip
clemesha.org
clemesha.org
http://guide.python-distribute.org/
Specifically this chart which shows the packaging roadmap:
http://guide.python-distribute.org/introduction.html#current...
Too often when coming to a new language, it's hard to know what is old and busted and what the future is.
This is too true. As a Python/Django newcomer that has been difficult.
Any perspectives on buildout and where it fits into the toolbox of the future?
I started using it after watching Jacob Kaplan-Moss' Django Deployment Workshop ([1] -- highly recommended) and I like it, but I read about virtualenv and pip much more often.
[1] http://python.mirocommunity.org/video/1689/pycon-2010-django...
One thing I don't really get about Python deployment tools in general is the idea of building eggs for everything, especially the parts of my own applications that I will never redistribute. This seems to be emphasized with all the tools.
I also think the idea of packaging to egg files is somewhat unneeded. When I use pip, I use cheeseshop for the more established frameworks I depend on (Django, south, etc...) but I also use pip to pull directly from various git repos.
When I package my own projects for use, I just drop a setup.py script in there and then install from github using pip. Looking at my requirements.txt for my main project, I have about 10 dependencies from cheeseshop and about 10 pulling from various git or bitbucket repos.
This appeals to me, but are there good reasons for avoiding installing packages to site-packages?
It's also very useful for managing different versions of packages - e.g. I can upgrade to the latest Django for one project without risking breaking all of the others.
Having said that, I install the stuff that I consider to be "core" globally - for me that's primarily numpy, but also a handful of others.
There's a (pardon the language, but I don't know a better term) shitfight between OS packages and Python packages for control of the global site packages. Each will override the other.
My current setup, which works very well: use pip and virtualenv for everything, leave the global site packages alone.
Everything you need to run Ubuntu this way can be achieved by:
apt-get install python-dev python-pip python-virtualenv virtualenvwrapper
Then mkvirtualenv, workon, and pip to your hearts content.
Combined with Django South it makes managing Django deployments a dream.
P.S. The parrot is not dead.