Chris Withers wrote:
"even" seems to imply this is a basic requirement. I wonder how many people are rolling out python apps on Win64? I'm certainly not...
Even was maybe a bit strong. Concerning win64, the first release of numpy we did for win64 has been downloaded 3000 times, even though it is experimental and not working. Obviously, this is linked to 'our' community: in scientific software, 64 bits arch has mattered for a long time, and a lot of people use windows, for better or worse. In numpy/scipy, even though the vast majority of dev are linux/mac os x users, windows installers are by far the most downloaded (the numbers are obviously skewed since many people can build from svn on linux/mac os x, whereas very few people will do so on windows).
I think it is also important to keep in mind that not everybody use the same workflow - I myself build a lot of non trivial python softwares on many platforms, and the whole virtualenv/buildout/pip workflows is very foreign to me, and do not fit at all how I want to build and deploy things.
How do you build and deploy things?
To answer your question: I use distutils, scons, and native OS package tools. Sandboxing at build time is done through chrooting (and some hacked wine setup for windows). I think the main issue is that we don't mean the same thing by "deploy things". For web developers, it seems that deploying mean repeat an exact environment with all its dependencies on a similar machine (or set of machines), often by the same person (or at least a technically competent person). In that scenario, if there is a problem (wrong pythonpath, double entry from an egg, etc...), you can easily fix it, and being able to use latest version of some libraries + developer convenience is the key. By deploying, I mean being able to give a single file which people can install by themselves, people who are often ignorant about PYTHONPATH, import mechanisms, what a .pth file is. In that scenario, altering the environment in a non workable state is a total failure. Developer convenience is a problem in many cases (concrete case: using the VCS to get which files to put in a distribution). This article is about ruby, but totally nails it IMHO: http://www.madstop.com/ruby/ruby_has_a_distribution_problem.html Given that web dev are the ones doing the work, it is natural and certainly legitimate that current distutils-related work is focused on this workflow. But this workflow is not always applicable to more 'traditional' deployments scenario, and it often does make life more difficult. It certainly did for me. David