zc.buildout, or Jim Fulton strikes again
Via another blog, I caught this screencast on zc.buildout, yet another magical creation by Jim Fulton. Those of us in the Python community know Jim pretty well, and I was lucky enough to work with him at one point, so it’s got me wondering.
Does it solve the problem as well as it appears, and does it come with any scary magic I can’t live with? Anyone worked with it?
This entry was posted at 10:14 pm on 4 March 2008 and is filed under Python. You can follow any responses to this entry through the post-specific RSS 2.0 feed.
Both comments and pings are currently closed.
I’ve used it. I haven’t seen the screencast, so I can’t comment on it. But I can summarize my experiences.
First – for development of small, ‘standalone’ packages, it’s awesome. It makes it very easy to create one or more test environments, standalone interpreters, etc. It’s great for trying out Eggs in a controlled environment. It’s great for generating scripts from said eggs.
Basically it makes it easy to create a package that you can checkout / clone / download and use in a repeatable way immediately.
One case that I found interesting was when I was working on a package that had to speak to multiple database back-ends. With buildout and the ‘testrunner’ recipe, it was very easy to make ‘test-sqlite’, ‘test-mysql’, and ‘test-postgres’ scripts that loaded different eggs to support their respective databases. Having them be separate meant I could still run ‘sqlite’ tests on boxes where I didn’t have the other environments installed.
There’s not really any scary magic, but it can be a bit frustrating to work with. Most documentation is written in doctest style, which can waste 120 lines of example source and output to show the toggling of a single switch. It can be frustrating to work through. There are some PDFs, screencasts, etc, floating around, but they’re not gathered in a cohesive place like a dedicated web site. A lot of the real power comes from the recipes, and the situation there is similar: documentation written in doctest format which doesn’t always map to real-world uses. There aren’t many documents (easily findable) that show how to work the different recipes together in real-world situations. The few documents that I can find that do that are dedicated to using Buildout with Plone or Grok.
But in general, I do think it’s a really good tool. Many of my frustrations came from a unique (it seems) situation made worse by severe lack of time and the need to convert our entire code base to be distutils/setuptools based (not easily done piecemeal, particularly during the height of our busy season).