What do folks use for build tools? (buildout alternatives?)

373 views
Skip to first unread message

Iain Duncan

unread,
Jul 20, 2015, 7:05:16 PM7/20/15
to pylons-...@googlegroups.com
Hi, we're embarking on a project that will stitch together many apps, and I figured I should do my due diligence on hunting for the state-of-the-nation in python build tools. I've personally used buildout in the past and liked it, but I know for other team members something that was more pip/virtualenv based would be preferable. Just curious what folks are using?

thanks!
Iain

Randall Leeds

unread,
Jul 20, 2015, 7:54:54 PM7/20/15
to pylons-...@googlegroups.com
I use pip and aggressive version pinning to at least within a major version number for any fast moving dependencies.

I am mostly making web applications that then get deployed inside a docker container where I get a stable system image and can run wild without virtualenv in my apps own little sandbox.


--
You received this message because you are subscribed to the Google Groups "pylons-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to pylons-discus...@googlegroups.com.
To post to this group, send email to pylons-...@googlegroups.com.
Visit this group at http://groups.google.com/group/pylons-discuss.
For more options, visit https://groups.google.com/d/optout.

Michael Sarahan

unread,
Jul 20, 2015, 9:24:44 PM7/20/15
to pylons-...@googlegroups.com
Conda (more of a tool for working with conda-based Python distributions, rather than a standalone tool, http://www.continuum.io/blog/conda ) and Hashdist ( https://hashdist.github.io/ ) are pretty interesting - more on the Python in science side, perhaps.  Might be worth trying to see how you like them.

Best,
Michael

Marius Gedminas

unread,
Jul 21, 2015, 1:37:23 AM7/21/15
to pylons-...@googlegroups.com
GNU Make (that wraps virtualenv + pip).

Sometimes I still use buildout, but it's a bit painful (it uses
easy_install rather than pip to do the installation).

Marius Gedminas
--
Added mysterious, undocumented --scanflags and --fuzzy options.
-- nmap 3.0 announcement
signature.asc

Mike Orr

unread,
Jul 21, 2015, 1:58:15 AM7/21/15
to pylons-...@googlegroups.com
I use pip/virtualenv. It mostly comes down to the person's background.
Pip/virtualenv appeals to those who like to learn and try out things
interactively, because the pip install/uninstall process is like an
interative Python session: you can install (~= import) things one at a
time to try them out, and uninstall (~= del) it if you don't like
it.... and eventually you have your entire stack installed and you
just have to remember to list the packages in setup.py or a
requirements file, and "pip freeze" can help with that. In contrast,
with buildout you're essentially recreating the environment every time
you want to add or change something, and that's a foreign concept to
some people. Then there's the recipe syntaxes, and the fact that only
one or two of them are relevant to 99% of the packages these people
would use, it seems like unnecessary overhead. On the other hand, i;m
told that buildout is more flexible and can do a wider variety of
installation tasks, and it may be philosophically better for
production deployments, so there's that.

--
Mike Orr <slugg...@gmail.com>

Andrew Sawyers

unread,
Jul 21, 2015, 4:40:25 AM7/21/15
to pylons-...@googlegroups.com
Hi Iain,
I use a combination of buildout, pip/easy_install (in ansible playbooks) and Dockerfile. There’s still nothing out there to replace buildout AFAIK in it’s full glory.

Regards,

Andrew

Oliver

unread,
Jul 21, 2015, 5:46:46 AM7/21/15
to pylons-...@googlegroups.com
I use docker to create my deployment unit:

1. create a base docker image with OS dependencies
2. mount checked out project from jenkins into docker + add devpi-container network -> install the project into
container via pip
3. commit container stage to image
4. run all tests in container
5. remove container -> to remove test artifacts
6. start container with mounted test db and make a health check
7. commit container stage to image -> save image for deployment

Jens W. Klein

unread,
Jul 21, 2015, 9:32:45 AM7/21/15
to pylons-...@googlegroups.com
I use primary zc.buildout. It is really powerful, but also complex. I
love the swiff-knife like features.

But for a smaller project I recently used just pip, requirements.txt and
make. It really depends on the projects complexity.

Jens
--
Klein & Partner KG, member of BlueDynamics Alliance

Jonathan Vanasco

unread,
Jul 21, 2015, 12:24:39 PM7/21/15
to pylons-...@googlegroups.com, je...@bluedynamics.com
out of all the various tools I looked at, ansible seemed to be one of the better ones -- but I really didn't want to learn another tool.

I got sick of trying to learn all the different configuration systems... and took the lazy choice (but more work) -- fabric.   It manages my virtualenv and runs pip.  plus it does all the os level maintenance and updates (checkouts, optimizations, starting/restarting servers, etc).  I know it's popular to use fabric+pip or fabric+buildout too.

We write three types of defs in Fabric:

* environment tasks (install, upgrade, set up symlinks, etc)
* optimization tasks (minify javascript/css, optimize templates, etc)
* deployment tasks (chains of the above 2)

the nice thing about working in fabric, is that it's all straightforward shell commands or normal python -- so there's not much of a special context (though you have to learn how the context managers work)

Bendl, Kurt

unread,
Jul 21, 2015, 3:21:05 PM7/21/15
to pylons-...@googlegroups.com
I'll set up virtualenv and simple 'pip' and
'pip freeze > requirements.txt' stuff for the app
development and deploy stuff.

For system configuration and orchestration of the whole
soup-to-nuts deploy, Ansible has proven to be pretty
dead simple, handling all the nitty-gritty os package
and dependency installations, setting up accounts,
web service configs, firewall configuration, that
kind of thing. Then, I'll have Ansible build the
virtualenv, pull the code, and do all the pip
install and deploy mojo for me. Repeatable deploys
are pretty simple at that point.

But, ya' know, I'm lazy. ;-)

-Kurt

Iain Duncan

unread,
Jul 21, 2015, 10:13:16 PM7/21/15
to pylons-...@googlegroups.com
Thanks everyone, that gives me lots to think about!

iain

Tom Lazar

unread,
Jul 23, 2015, 6:01:21 PM7/23/15
to pylons-...@googlegroups.com
just wanted to chime in, too :)

i’m a buildout veteran and have recently switched to using pip+virtualenv+make (as have others in this thread) and i have to admit that i’m not looking back…

anything beyond local development setup i handle using a combination of ansible (for declarative setup) and fabric (for imperative tasks on top of the setup).

the ‘glue’ for all of this is a homegrown tool called ploy[1] - disclaimer: i have collaborated heavily on that tool with its main author florian schulze of mr.developer fame (a buildout plugin)

of course, i’m biassed, but i have to say that the ansible+fabric combination of ploy has been working out extremely well for us over the past 1-2 years - and our setups have grown to non-trivial dimensions without a hiccup, too.

hth,

tom


signature.asc

tonthon

unread,
Sep 7, 2015, 9:52:19 AM9/7/15
to pylons-...@googlegroups.com
I use
pip + saltstack
> --
> You received this message because you are subscribed to the Google
> Groups "pylons-discuss" group.
> To unsubscribe from this group and stop receiving emails from it, send
> an email to pylons-discus...@googlegroups.com
> <mailto:pylons-discus...@googlegroups.com>.
> To post to this group, send email to pylons-...@googlegroups.com
> <mailto:pylons-...@googlegroups.com>.
Reply all
Reply to author
Forward
0 new messages