summaryrefslogtreecommitdiffstats
path: root/Doc/libsite.tex
blob: 3dffd1ceec0f92ea66811c65c85069c420b9bf94 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
\section{Standard Module \sectcode{site}}
\label{module-site}
\stmodindex{site}

\strong{This module is automatically imported during initialization.}

In earlier versions of Python (up to and including 1.5a3), scripts or
modules that needed to use site-specific modules would place
\code{import site} somewhere near the top of their code.  This is no
longer necessary.

This will append up site-specific paths to to the module search path.
It starts with \code{sys.prefix} and \code{sys.exec_prefix} (if
different) and appends \file{lib/python\var{version}/packages}.  The
resulting directory, if it exists, is added to \code{sys.path}, and
also inspected for path configuration files.  A path configuration
file is a file whose name has the form \file{\var{package}.pth}; its
contents are additional directories (one per line) to be added to
\code{sys.path}.  Non-existing directories (or non-directories) are
never added to \code{sys.path}; no directory is added to
\code{sys.path} more than once.  Blank lines and lines beginning with
\code{\#} are skipped.
\index{package}
\kwindex{sys.prefix}
\kwindex{sys.exec_prefix}
\kwindex{prefix}
\kwindex{exec_prefix}

For example, suppose \code{sys.prefix} and \code{sys.exec_prefix} are
set to \file{/usr/local}.  The Python 1.5 library is then installed in
\file{/usr/local/lib/python1.5}.  Suppose this has a subdirectory
\file{/usr/local/python1.5/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:

\bcode\begin{verbatim}
# foo package configuration

foo
bar
bletch
\end{verbatim}\ecode

and \file{bar.pth} contains:

\bcode\begin{verbatim}
# bar package configuration

bar
\end{verbatim}\ecode

Then the following directories are added to sys.path, in this order:

\bcode\begin{verbatim}
/usr/local/python1.5/packages/bar
/usr/local/python1.5/packages/foo
\end{verbatim}\ecode

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 \code{sitecustomize}, which can perform arbitrary site-specific
customizations.  If this import fails with an \code{ImportError}
exception, it is silently ignored.
\stmodindex{sitecustomize}

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 \code{sitecustomize} is still attempted.