annotate Lib/site.py @ 5817:48b94de85bf3 legacy-trunk

Extensive changes by AMK.
author Guido van Rossum <guido@python.org>
date Thu, 17 Jul 1997 16:29:42 +0000
parents cccf9f2732cf
children c57cede3c7c0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4010
cccf9f2732cf site customization hook...
Guido van Rossum <guido@python.org>
parents:
diff changeset
1 """Hook to allow easy access to site-specific modules.
cccf9f2732cf site customization hook...
Guido van Rossum <guido@python.org>
parents:
diff changeset
2
cccf9f2732cf site customization hook...
Guido van Rossum <guido@python.org>
parents:
diff changeset
3 Scripts or modules that need to use site-specific modules should place
cccf9f2732cf site customization hook...
Guido van Rossum <guido@python.org>
parents:
diff changeset
4
cccf9f2732cf site customization hook...
Guido van Rossum <guido@python.org>
parents:
diff changeset
5 import site
cccf9f2732cf site customization hook...
Guido van Rossum <guido@python.org>
parents:
diff changeset
6
cccf9f2732cf site customization hook...
Guido van Rossum <guido@python.org>
parents:
diff changeset
7 somewhere near the top of their code. This will append up to two
cccf9f2732cf site customization hook...
Guido van Rossum <guido@python.org>
parents:
diff changeset
8 site-specific paths ($prefix/lib/site-python and
cccf9f2732cf site customization hook...
Guido van Rossum <guido@python.org>
parents:
diff changeset
9 $exec_prefix/lib/site-python) to the module search path. ($prefix
cccf9f2732cf site customization hook...
Guido van Rossum <guido@python.org>
parents:
diff changeset
10 and $exec_prefix are configuration parameters, and both default
cccf9f2732cf site customization hook...
Guido van Rossum <guido@python.org>
parents:
diff changeset
11 to /usr/local; they are accessible in Python as sys.prefix and
cccf9f2732cf site customization hook...
Guido van Rossum <guido@python.org>
parents:
diff changeset
12 sys.exec_prefix).
cccf9f2732cf site customization hook...
Guido van Rossum <guido@python.org>
parents:
diff changeset
13
cccf9f2732cf site customization hook...
Guido van Rossum <guido@python.org>
parents:
diff changeset
14 Because of Python's import semantics, it is okay for more than one
cccf9f2732cf site customization hook...
Guido van Rossum <guido@python.org>
parents:
diff changeset
15 module to import site -- only the first one will execute the site
cccf9f2732cf site customization hook...
Guido van Rossum <guido@python.org>
parents:
diff changeset
16 customizations. The directories are only appended to the path if they
cccf9f2732cf site customization hook...
Guido van Rossum <guido@python.org>
parents:
diff changeset
17 exist and are not already on it.
cccf9f2732cf site customization hook...
Guido van Rossum <guido@python.org>
parents:
diff changeset
18
cccf9f2732cf site customization hook...
Guido van Rossum <guido@python.org>
parents:
diff changeset
19 Sites that wish to provide site-specific modules should place them in
cccf9f2732cf site customization hook...
Guido van Rossum <guido@python.org>
parents:
diff changeset
20 one of the site specific directories; $prefix/lib/site-python is for
cccf9f2732cf site customization hook...
Guido van Rossum <guido@python.org>
parents:
diff changeset
21 Python source code and $exec_prefix/lib/site-python is for dynamically
cccf9f2732cf site customization hook...
Guido van Rossum <guido@python.org>
parents:
diff changeset
22 loadable extension modules (shared libraries).
cccf9f2732cf site customization hook...
Guido van Rossum <guido@python.org>
parents:
diff changeset
23
cccf9f2732cf site customization hook...
Guido van Rossum <guido@python.org>
parents:
diff changeset
24 After these path manipulations, an attempt is made to import a module
cccf9f2732cf site customization hook...
Guido van Rossum <guido@python.org>
parents:
diff changeset
25 named sitecustomize, which can perform arbitrary site-specific
cccf9f2732cf site customization hook...
Guido van Rossum <guido@python.org>
parents:
diff changeset
26 customizations. If this import fails with an ImportError exception,
cccf9f2732cf site customization hook...
Guido van Rossum <guido@python.org>
parents:
diff changeset
27 it is ignored.
cccf9f2732cf site customization hook...
Guido van Rossum <guido@python.org>
parents:
diff changeset
28
cccf9f2732cf site customization hook...
Guido van Rossum <guido@python.org>
parents:
diff changeset
29 Note that for non-Unix systems, sys.prefix and sys.exec_prefix are
cccf9f2732cf site customization hook...
Guido van Rossum <guido@python.org>
parents:
diff changeset
30 empty, and the path manipulations are skipped; however the import of
cccf9f2732cf site customization hook...
Guido van Rossum <guido@python.org>
parents:
diff changeset
31 sitecustomize is still attempted.
cccf9f2732cf site customization hook...
Guido van Rossum <guido@python.org>
parents:
diff changeset
32
cccf9f2732cf site customization hook...
Guido van Rossum <guido@python.org>
parents:
diff changeset
33 XXX Any suggestions as to how to handle this for non-Unix systems???
cccf9f2732cf site customization hook...
Guido van Rossum <guido@python.org>
parents:
diff changeset
34 """
cccf9f2732cf site customization hook...
Guido van Rossum <guido@python.org>
parents:
diff changeset
35
cccf9f2732cf site customization hook...
Guido van Rossum <guido@python.org>
parents:
diff changeset
36 import sys, os
cccf9f2732cf site customization hook...
Guido van Rossum <guido@python.org>
parents:
diff changeset
37
cccf9f2732cf site customization hook...
Guido van Rossum <guido@python.org>
parents:
diff changeset
38 for prefix in sys.prefix, sys.exec_prefix:
cccf9f2732cf site customization hook...
Guido van Rossum <guido@python.org>
parents:
diff changeset
39 if prefix:
cccf9f2732cf site customization hook...
Guido van Rossum <guido@python.org>
parents:
diff changeset
40 sitedir = os.path.join(prefix, os.path.join("lib", "site-python"))
cccf9f2732cf site customization hook...
Guido van Rossum <guido@python.org>
parents:
diff changeset
41 if sitedir not in sys.path and os.path.isdir(sitedir):
cccf9f2732cf site customization hook...
Guido van Rossum <guido@python.org>
parents:
diff changeset
42 sys.path.append(sitedir) # Add path component
cccf9f2732cf site customization hook...
Guido van Rossum <guido@python.org>
parents:
diff changeset
43
cccf9f2732cf site customization hook...
Guido van Rossum <guido@python.org>
parents:
diff changeset
44 try:
cccf9f2732cf site customization hook...
Guido van Rossum <guido@python.org>
parents:
diff changeset
45 import sitecustomize # Run arbitrary site specific code
cccf9f2732cf site customization hook...
Guido van Rossum <guido@python.org>
parents:
diff changeset
46 except ImportError:
cccf9f2732cf site customization hook...
Guido van Rossum <guido@python.org>
parents:
diff changeset
47 pass # No site customization module