1 """Append module search paths for third-party packages to sys.path.
3 ****************************************************************
4 * This module is automatically imported during initialization. *
5 ****************************************************************
7 In earlier versions of Python (up to 1.5a3), scripts or modules that
8 needed to use site-specific modules would place ``import site''
9 somewhere near the top of their code. Because of the automatic
10 import, this is no longer necessary (but code that does it still
13 This will append site-specific paths to to the module search path. On
14 Unix, it starts with sys.prefix and sys.exec_prefix (if different) and
15 appends lib/python<version>/site-packages as well as lib/site-python.
16 On other platforms (mainly Mac and Windows), it uses just sys.prefix
17 (and sys.exec_prefix, if different, but this is unlikely). The
18 resulting directories, if they exist, are appended to sys.path, and
19 also inspected for path configuration files.
21 A path configuration file is a file whose name has the form
22 <package>.pth; its contents are additional directories (one per line)
23 to be added to sys.path. Non-existing directories (or
24 non-directories) are never added to sys.path; no directory is added to
25 sys.path more than once. Blank lines and lines beginning with
28 For example, suppose sys.prefix and sys.exec_prefix are set to
29 /usr/local and there is a directory /usr/local/lib/python1.5/site-packages
30 with three subdirectories, foo, bar and spam, and two path
31 configuration files, foo.pth and bar.pth. Assume foo.pth contains the
34 # foo package configuration
41 # bar package configuration
44 Then the following directories are added to sys.path, in this order:
46 /usr/local/lib/python1.5/site-packages/bar
47 /usr/local/lib/python1.5/site-packages/foo
49 Note that bletch is omitted because it doesn't exist; bar precedes foo
50 because bar.pth comes alphabetically before foo.pth; and spam is
51 omitted because it is not mentioned in either path configuration file.
53 After these path manipulations, an attempt is made to import a module
54 named sitecustomize, which can perform arbitrary additional
55 site-specific customizations. If this import fails with an
56 ImportError exception, it is silently ignored.
62 def addsitedir(sitedir
):
63 if sitedir
not in sys
.path
:
64 sys
.path
.append(sitedir
) # Add path component
66 names
= os
.listdir(sitedir
)
69 names
= map(os
.path
.normcase
, names
)
72 if name
[-4:] == ".pth":
73 addpackage(sitedir
, name
)
75 def addpackage(sitedir
, name
):
76 fullname
= os
.path
.join(sitedir
, name
)
89 dir = os
.path
.join(sitedir
, dir)
90 if dir not in sys
.path
and os
.path
.exists(dir):
93 prefixes
= [sys
.prefix
]
94 if sys
.exec_prefix
!= sys
.prefix
:
95 prefixes
.append(sys
.exec_prefix
)
96 for prefix
in prefixes
:
99 sitedirs
= [os
.path
.join(prefix
,
101 "python" + sys
.version
[:3],
103 os
.path
.join(prefix
, "lib", "site-python")]
106 for sitedir
in sitedirs
:
107 if os
.path
.isdir(sitedir
):
110 # Define new built-ins 'quit' and 'exit'.
111 # These are simply strings that display a hint on how to exit.
113 exit
= 'Use Cmd-Q to quit.'
115 exit
= 'Use Ctrl-Z plus Return to exit.'
117 exit
= 'Use Ctrl-D (i.e. EOF) to exit.'
119 __builtin__
.quit
= __builtin__
.exit
= exit
123 import sitecustomize
# Run arbitrary site specific code
125 pass # No site customization module
133 if __name__
== '__main__':