\section{\module{site} ---
         Site-specific configuration hook}

\declaremodule{standard}{site}
\modulesynopsis{A standard way to reference site-specific modules.}


\strong{This module is automatically imported during initialization.}
The automatic import can be suppressed using the interpreter's
\programopt{-S} option.

Importing this module will append site-specific paths to the module
search path.
\indexiii{module}{search}{path}

It starts by constructing up to four directories from a head and a
tail part.  For the head part, it uses \code{sys.prefix} and
\code{sys.exec_prefix}; empty heads are skipped.  For
the tail part, it uses the empty string (on Windows) or
\file{lib/python\shortversion/site-packages} (on \UNIX{} and Macintosh)
and then \file{lib/site-python}.  For each of the distinct
head-tail combinations, it sees if it refers to an existing directory,
and if so, adds it to \code{sys.path} and also inspects the newly added 
path for configuration files.
\indexii{site-python}{directory}
\indexii{site-packages}{directory}

A path configuration file is a file whose name has the form
\file{\var{package}.pth} and exists in one of the four directories
mentioned above; its contents are additional items (one
per line) to be added to \code{sys.path}.  Non-existing items are
never added to \code{sys.path}, but no check is made that the item
refers to a directory (rather than a file).  No item is added to
\code{sys.path} more than once.  Blank lines and lines beginning with
\code{\#} are skipped.  Lines starting with \code{import} are executed.
\index{package}
\indexiii{path}{configuration}{file}

For example, suppose \code{sys.prefix} and \code{sys.exec_prefix} are
set to \file{/usr/local}.  The Python \version\ library is then
installed in \file{/usr/local/lib/python\shortversion} (where only the
first three characters of \code{sys.version} are used to form the
installation path name).  Suppose this has a subdirectory
\file{/usr/local/lib/python\shortversion/site-packages} with three
subsubdirectories, \file{foo}, \file{bar} and \file{spam}, and two
path configuration files, \file{foo.pth} and \file{bar.pth}.  Assume
\file{foo.pth} contains the following:

\begin{verbatim}
# foo package configuration

foo
bar
bletch
\end{verbatim}

and \file{bar.pth} contains:

\begin{verbatim}
# bar package configuration

bar
\end{verbatim}

Then the following directories are added to \code{sys.path}, in this
order:

\begin{verbatim}
/usr/local/lib/python2.3/site-packages/bar
/usr/local/lib/python2.3/site-packages/foo
\end{verbatim}

Note that \file{bletch} is omitted because it doesn't exist; the
\file{bar} directory precedes the \file{foo} directory because
\file{bar.pth} comes alphabetically before \file{foo.pth}; and
\file{spam} is omitted because it is not mentioned in either path
configuration file.

After these path manipulations, an attempt is made to import a module
named \module{sitecustomize}\refmodindex{sitecustomize}, which can
perform arbitrary site-specific customizations.  If this import fails
with an \exception{ImportError} exception, it is silently ignored.

Note that for some non-\UNIX{} systems, \code{sys.prefix} and
\code{sys.exec_prefix} are empty, and the path manipulations are
skipped; however the import of
\module{sitecustomize}\refmodindex{sitecustomize} is still attempted.
