summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Lib/site.py47
1 files changed, 47 insertions, 0 deletions
diff --git a/Lib/site.py b/Lib/site.py
new file mode 100644
index 0000000000..d2420cfdde
--- /dev/null
+++ b/Lib/site.py
@@ -0,0 +1,47 @@
+"""Hook to allow easy access to site-specific modules.
+
+Scripts or modules that need to use site-specific modules should place
+
+ import site
+
+somewhere near the top of their code. This will append up to two
+site-specific paths ($prefix/lib/site-python and
+$exec_prefix/lib/site-python) to the module search path. ($prefix
+and $exec_prefix are configuration parameters, and both default
+to /usr/local; they are accessible in Python as sys.prefix and
+sys.exec_prefix).
+
+Because of Python's import semantics, it is okay for more than one
+module to import site -- only the first one will execute the site
+customizations. The directories are only appended to the path if they
+exist and are not already on it.
+
+Sites that wish to provide site-specific modules should place them in
+one of the site specific directories; $prefix/lib/site-python is for
+Python source code and $exec_prefix/lib/site-python is for dynamically
+loadable extension modules (shared libraries).
+
+After these path manipulations, an attempt is made to import a module
+named sitecustomize, which can perform arbitrary site-specific
+customizations. If this import fails with an ImportError exception,
+it is ignored.
+
+Note that for non-Unix systems, sys.prefix and sys.exec_prefix are
+empty, and the path manipulations are skipped; however the import of
+sitecustomize is still attempted.
+
+XXX Any suggestions as to how to handle this for non-Unix systems???
+"""
+
+import sys, os
+
+for prefix in sys.prefix, sys.exec_prefix:
+ if prefix:
+ sitedir = os.path.join(prefix, os.path.join("lib", "site-python"))
+ if sitedir not in sys.path and os.path.isdir(sitedir):
+ sys.path.append(sitedir) # Add path component
+
+try:
+ import sitecustomize # Run arbitrary site specific code
+except ImportError:
+ pass # No site customization module