From e57c96ee4cef00515e3bf6529d6888c4b5f8483b Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Sat, 17 Aug 1996 19:56:26 +0000 Subject: [PATCH] site customization hook... --- Lib/site.py | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 Lib/site.py diff --git a/Lib/site.py b/Lib/site.py new file mode 100644 index 00000000000..d2420cfddea --- /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