[Distutils] Distutils and Applications

Fred L. Drake, Jr. fdrake at acm.org
Wed Feb 2 23:51:05 CET 2005

The distutils package has generally proven to be a quite useful tool
to support building and installing Python modules and packages.
There's some limited support for installing scripts and data files,
which makes it somewhat useful for larger applications.  Large
applications can have complex requirements for installation, however,
and distutils has some limitations that could be addressed.

Larger applications generally want a number of features that aren't
currently supported by distutils:

- They want to be isolated from the rest of the platform, and not
  generally have their code installed into the site-packages/
  directory.  Normally they don't want to share the platform's Python
  installation, if there is one.

- They may want to install 3rd-party packages into their isolated
  environment as well, in addition to their own implementation.  It
  should be easy to take a package containing a 3rd-party package and
  bundle it with the application or to install it later.

- It must be possible for scripts to behave in the ways that are
  expected on the host platform.  This includes the presence/absence
  of filename extensions.

- Particularly elaborate "platform" applications (such as Zope 3) may
  want to support multiple "extension" areas which can then be "bound"
  to different versions of the application software.

- It should be possible to perform installation in a "silent" mode
  that does not requre interation with a human.  This is especially
  important to support managed deployments.  It should be possible to
  specify the installation location using a command line argument.

- Conventional packaging structures for each platform should be used.
  For Unix, this means it should be able to create a tarball that
  supports configure/make/make install, and for Windows, either a
  conventional executable installer or an MSI installer (or both).
  (Remember, the consumers are not necessarily Python programmers.)

Some of these may be best provided by extensions to distutils, and
others may be best provided by separate utilities.  I'd like to figure
out what portion of this is shared and should be supported by
distutils, and what should remain outside distutils.

Anything of this that could be shared (in or out of distutils itself)
we can work on at PyCon in the distutils sprint:



Fred L. Drake, Jr.  <fdrake at acm.org>

More information about the Distutils-SIG mailing list