The proposed Module Distribution Utilities for Python, or distutils for short, are needed to fill a number of long-standing holes in the Python distribution and culture. In roughly decreasing order of priority:
- There must be an easy, standardized way for users and administrators to add new modules (including extension modules) to an existing Python installation on any platform supported by Python itself.
- There must be an easy, standardized way to characterize "meta-data" about a module distribution such as its name, version number, area of applicability, description, and so forth, for the use of indexing and search tools.
- There must be an easy, standardized way to create "built distributions" (ready-to-install downloadable resources, with all compilation and other processing done) for the major platforms.
- Module distributions must have a standardized way to express their dependencies on other modules (both simple presence/absence and required version number) and on Python itself (version number), and these dependencies must be checked at setup/build/install time.
- It must be possible (and preferably easy) to instead download and build from a source distribution. (Necessary for people who don't happen to be using one of the major platforms, or who don't trust built distributions.)
- To aid in installing all modules, and in building extension modules from C/C++ source, there must be a standardized way to get Python's configuration data (such as compiler, compiler flags, platform, default library directory, etc.).
- It must be easy for a module developer to create both source and built distributions.
- It must be easy for a third party (the "packager") to download a source distribution, build it on a particular platform, and create a built distribution for that platform which can then be trivially used by less sophisticated users of that platform.
I have also written a summary of the division of labour and common tasks, which is a more detailed statement of the project requirements that comes at the problem from a different angle.