Often, it's not possible to write down everything needed to build a distribution a priori. You need to get some information from the user, or from the user's system, in order to proceed. For example, you might include an optional extension module that provides an interface to a particular C library. If that library is installed on the user's system, then you can build your optional extension--but you need to know where to find the header and library file. If it's not installed, you need to know this so you can omit your optional extension.
The preferred way to do this, of course, would be for you to tell the Distutils which optional features (C libraries, system calls, external utilities, etc.) you're looking for, and it would inspect the user's system and try to find them. This functionality may appear in a future version of the Distutils, but it isn't there now. So, for the time being, we rely on the user building and installing your software to provide the necessary information. The vehicle for doing so is the setup configuration file, setup.cfg.
** need more here! **