| """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 |