\section{\module{distutils} ---
         Building and installing Python modules}

\declaremodule{standard}{distutils}
\modulesynopsis{Support for building and installing Python modules
                into an existing Python installation.}
\sectionauthor{Fred L. Drake, Jr.}{fdrake@acm.org}


The \module{distutils} package provides support for building and
installing additional modules into a Python installation.  The new
modules may be either 100\%{}-pure Python, or may be extension modules
written in C, or may be collections of Python packages which include
modules coded in both Python and C.

This package is discussed in two separate documents which are included
in the Python documentation package.  To learn about distributing new
modules using the \module{distutils} facilities, read
\citetitle[../dist/dist.html]{Distributing Python Modules}; this
includes documentation needed to extend distutils.  To learn
about installing Python modules, whether or not the author made use of
the \module{distutils} package, read
\citetitle[../inst/inst.html]{Installing Python Modules}.


\begin{seealso}
  \seetitle[../dist/dist.html]{Distributing Python Modules}{The manual
            for developers and packagers of Python modules.  This
            describes how to prepare \module{distutils}-based packages
            so that they may be easily installed into an existing
            Python installation.}

  \seetitle[../inst/inst.html]{Installing Python Modules}{An
            ``administrators'' manual which includes information on
            installing modules into an existing Python installation.
            You do not need to be a Python programmer to read this
            manual.}
\end{seealso}
