[Python-Dev] Raising objections (was: setuptools in the stdlib)
Phillip J. Eby
pje at telecommunity.com
Wed Apr 19 08:51:18 CEST 2006
At 08:22 AM 4/19/2006 +0200, Walter Dörwald wrote:
>Anthony Baxter wrote:
>
> > I'm not sure how people would prefer this be handled. I don't think we
> > need to have a PEP for it - I don't see PEPs for ctypes, elementtree,
> > pysqlite or cProfile, either.
>
>If I'm not calling shared libraries from Python I can ignore ctypes. If
>I'm not doing XML, I can ignore elementtree. If I'm not doing SQL I can
>ignore pysqlite and if I'm not interested in profiling I can ignore
>cProfile.
And if you're not using setuptools, or any packages that do, you can ignore
it as well.
>But setuptools will potentially affect anyone that uses
>third-party modules/packages.
Setuptools already exists, so it already affects "anyone that uses
third-party modules/packages". That genie isn't going back in the
metaphorical bottle.
However, if setuptools is in the stdlib, it means that those people won't
have to install setuptools *first* in order to use a package that's
distributed using setuptools. Thus, having it in the stdlib arguably
*reduces* the impact of setuptools on such users.
> > Sure, it's possible that some people with extremely complicated
> > distutils scripts may find they need to update them.
>
>Wouldn't I need at least have to change "from distutils.core import
>setup" to "from setuptools import setup"? Or to something like:
>
>try:
> import ez_setup
>except ImportError:
> import distutils.core as tools
>else:
> ez_setup.use_setuptools()
> import setuptools as tools
>
>for backwards compatibility reasons?
If, and *only* if, you want to use setuptools, or your users hound you
enough to make you. :)
Nobody is *forced* to use setuptools for a package they are distributing,
any more than they are forced to use ctypes. The "setuptools takes over
everything" argument is purest FUD and nonsense. Developers use setuptools
because they want the features, or because their users want them to.
It's true that sometimes users demand setuptools support, when all they
really want is the ability to build eggs. For example, some folks were
bugging Greg Ewing to add it to Pyrex, and I had to point out that as long
as Pyrex has a PyPI entry and a vanilla setup.py, there is no need for him
to start using setuptools. So he created a PyPI entry, making it now
possible for easy_install users to do this:
$ python2.5 -m easy_install Pyrex
Searching for Pyrex
Reading http://www.python.org/pypi/Pyrex/
Reading http://www.cosc.canterbury.ac.nz/~greg/python/Pyrex/
Best match: Pyrex 0.9.4
Downloading
http://www.cosc.canterbury.ac.nz/~greg/python/Pyrex/Pyrex-0.9.4.tar.gz
Processing Pyrex-0.9.4.tar.gz
...
zip_safe flag not set; analyzing archive contents...
...
Adding Pyrex 0.9.4 to easy-install.pth file
Installing pyrexc script to /home/pje/bin
Installed /home/pje/lib/python2.5/site-packages/Pyrex-0.9.4-py2.5.egg
Processing dependencies for Pyrex
$
So, nobody was forced to import setuptools in order to offer any features
to end users. Setuptools is perfectly capable of running setup scripts and
making them into eggs on its own, within reasonable levels of distutils
customization.
More information about the Python-Dev
mailing list