[Distutils] Questionnaire: Why do you use setuptools?

Zooko O'Whielacronx zooko at zooko.com
Wed Apr 22 01:20:21 CEST 2009


Ugh.  Sorry -- I was on a plane when I composed this and I  
accidentally sent it the next time I connected to the Net before  
adding the references.  Here they are:

On Apr 20, 2009, at 18:06 PM, Zooko O'Whielacronx wrote:

> Roughly in order of most important to least important:
>
> 1.  a formal, machine-readable way to specify our dependencies; see  
> XYZ [2]

[2] http://allmydata.org/trac/tahoe/browser/_auto_deps.py

> 2.  automatic installation of dependencies;  This reduces the  
> "dependencies" section in the instructions for installing Tahoe [1]  
> from having sixteen separate software packages with separate  
> versioning requirements to having one: Python 2.4.2 through 2.6.

[1] http://allmydata.org/source/tahoe/trunk/docs/install.html

> 3.  Obviously having even one "dependency" in your installation  
> instructions is too many, so we try to provide .deb's, .rpm's,  
> gentoo ebuilds, Windows installers (e.g. as produced by py2exe or  
> bbfreeze), Macintosh applications, etc.  Many of the tools that  
> produce these other formats rely on the above-mentioned feature #1  
> and/or feature #2.
>
> 4.  Some people like to use "easy_install $PACKAGE".  In fact,  
> quite a lot of people -- if I recall the results of Tarek's  
> packaging survey correctly, it was more popular among the  
> responding Python programmers than any other method of installing  
> packages [3].

[3] http://tarekziade.wordpress.com/2009/03/26/packaging-survey-first- 
results

> 5.  Using plugins so that you can add features to your build  
> system, such as revision control integration, unit testing,  
> versioning, pyflakes, uploading, etc. which you re-use as black box  
> modules maintained by someone else instead of copying code into  
> your setup.py or your GNUmakefile. [4, 5, 6, 7, 8].

[4] http://pypi.python.org/pypi/setuptools_darcs
[5] http://pypi.python.org/pypi/setuptools_bzr
[6] http://pypi.python.org/pypi/setuptools_hg
[7] http://pypi.python.org/pypi/setuptools_pyflakes
[8] http://pypi.python.org/pypi/setuptools_trial
[9] http://pypi.python.org/pypi/collective.releaser
[10] http://pypi.python.org/pypi/django-reusableapps
[11] http://pypi.python.org/pypi/eggchecker
[12] http://pypi.python.org/pypi/iw.releaser
[13] http://pypi.python.org/pypi/peggy
[14] http://pypi.python.org/pypi/CodeTools
[15] http://pypi.python.org/pypi/collective.dist
[16] http://pypi.python.org/pypi/disthelper
[17] http://pypi.python.org/pypi/bbfreeze
[18] http://pypi.python.org/pypi/buildutils
[19] http://pypi.python.org/pypi/eggtestinfo
[20] http://pypi.python.org/pypi/pip
[21] http://pypi.python.org/pypi/pydeploy32
[22] http://pypi.python.org/pypi/py2app
[23] http://pypi.python.org/pypi/pyinstall
[24] http://pypi.python.org/pypi/pyrun
[25] http://pypi.python.org/pypi/PythonEggTools
[26] http://pypi.python.org/pypi/setuphelper
[27] http://pypi.python.org/pypi/virtualenv
[28] http://pypi.python.org/pypi/yolk
[29] http://pypi.python.org/pypi/yolk-portage
[30] http://pypi.python.org/pypi/zc.buildout
[31] http://pypi.python.org/pypi/Enstaller

I should emphasize that this list is by no means exhaustive -- I just  
scanned through the results of searching pypi for the word  
"setuptools" and pulled out a few that seemed to be vaguely relevant.

I'm think that there might a danger of us distutils-sig folks  
underestimating the value offered by compatibility with setuptools.   
Most of the authors of these packages are probably not reading  
distutils-sig, and so most of them are probably not answering the  
questions like "Why do you use setuptools?".  (For one thing, this  
mailing list is just insanely high volume -- it is hard to make time  
to keep up.)  Many of the authors of these packages and the other  
packages like these are not going to go to much, if any, effort to  
change their tools to support the new Distutils.  To the degree to  
which new authors of new projects which use the new Distutils can  
get, for free, compatibility with projects like these ones that  
already use setuptools, then everyone can benefit.

Regards,

Zooko


> 6.  Using the console scripts feature of setuptools to make it so  
> your scripts that you wrote for Unix also work on Windows.
>
> 7.  python setup.py sdist upload register
>
> 8.  revision control integration; I want all files under revision  
> control to be included in packages.


More information about the Distutils-SIG mailing list