cpython/Doc/lib/libsite.tex

94 lines
3.4 KiB
TeX
Raw Normal View History

\section{\module{site} ---
1999-02-19 20:14:17 -04:00
Site-specific configuration hook}
1999-02-19 20:14:17 -04:00
\declaremodule{standard}{site}
\modulesynopsis{A standard way to reference site-specific modules.}
1997-04-03 18:41:49 -04:00
\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 and then
\file{lib/site-packages} (on Windows) or
\file{lib/python\shortversion/site-packages} and then
\file{lib/site-python} (on \UNIX{} and Macintosh). 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} (followed by space or tab)
are executed.
\versionchanged[A space or tab is now required after the import
keyword]{2.6}
\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}
2002-02-18 22:58:54 -04:00
/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.
1997-04-03 18:41:49 -04:00
After these path manipulations, an attempt is made to import a module
1998-03-08 03:09:19 -04:00
named \module{sitecustomize}\refmodindex{sitecustomize}, which can
perform arbitrary site-specific customizations. If this import fails
1998-03-08 03:09:19 -04:00
with an \exception{ImportError} exception, it is silently ignored.
1997-04-03 18:41:49 -04:00
Note that for some non-\UNIX{} systems, \code{sys.prefix} and
1997-04-03 18:41:49 -04:00
\code{sys.exec_prefix} are empty, and the path manipulations are
skipped; however the import of
1998-03-08 03:09:19 -04:00
\module{sitecustomize}\refmodindex{sitecustomize} is still attempted.