[Distutils] Why not distutils? (was Re: [Python-Dev] shal we redefine "module" and "package"?)
zooko
zooko at zooko.com
Thu May 1 23:17:19 CEST 2008
On May 1, 2008, at 2:51 PM, glyph at divmod.com wrote:
> I'm not on distutils-sig, but this is probably of little interest
> to python-dev. Please Cc: me if you think my continued input would
> be useful to this discussion.
I use distutils (or setuptools) plus GNU stow to solve the following
subset of your complaints:
> The #1 reason:
>
> * distutils does not provide an uninstaller.
...
> * distutils will interfere with the system package manager,
> potentially breaking it, by writing files to locations reserved for
> the system package manager (/usr, et. al.)
> * distutils won't uninstall a system-installed version of the
> package first, so if you use e.g. --force to overwrite your system
> files, you may end up with leftover system packaged (incompatible,
> earlier-version) plugins or modules which break your distutils install
> * running arbitrary, non-vendor-supported code as root as a matter
> of habit is, in my humble opinion, bad; distutils requires you to
> run as root for the default behavior to work. the system package
> manager typically requires root permission too, but at least it's
> the sort of thing which has been audited.
> * not only can you not reverse the process, there's no way to
> *tell* if distutils has crapped all over your system installation
> of a particular package
GNU stow + distutils or setuptools solves all of the above for me.
It does not solve the following:
> * setuptools causes seemingly random breakages (in packages which
> support it), and I don't want to deal with bug reports from users
> related to packaging; packagers are capable of dealing with
> setuptools' interactions with the platform and creating a nice,
> neat bundle that works as expected.
> * when you say "distutils", what do you mean? running 'setup.py'
> from some random revision of trunk? doing 'sdist' from trunk, then
> install? Using operating-system packages at least suggests that
> you're using a release, or if not an actual release, you've gone
> through something approximating the actual release/build process
> that we suggest for users.
> * if the user is installing for development anyway, and not for
> deployment, then why bother doing any installation step at all?
> It's probably better to just drop an SVN checkout on PYTHONPATH
> somewhere.
> And, finally...
>
> * why bother having installers prepared for particular systems, if
> they are not the preferred way of doing things? If and when
> distutils is ready to be the thing I will suggest to users, I
> imagine that we'll stop having operating system packages. (Of
> course, that begs the question why distutils would have commands
> like "bdist_wininst" - it's difficult to beat the native packages
> for convenience.)
Why indeed? I personally prefer to distribute my code in the form
of source .tar.gz's which are to be installed either with
easy_install or by untarring them and running "setup.py", and I
prefer to re-use code from other people in that same format.
Regards,
Zooko
More information about the Distutils-SIG
mailing list