I\'ve been learning Python, I\'m working in 2.7.3, and I\'m trying to understand import statements.
The documentation says that when you attemp
Built-in modules are the modules listed under sys.builtin_module_names. These modules are compiled together with the interpreter, and hence are always available. Note that they are part of the standard library but the standard library includes many more modules. To make the difference clear, if you try to run this code in python3.3:
>>> import sys
>>> sys.path = []
>>> import os # works
>>> import traceback # ImportError, traceback is in the stdlib!
On python2 both succeed because the import special-cases the standard library path. (See this for more information on the changes to import in python3.3).
If the PYTHONPATH isn't found then it doesn't include any extra directory. However the documentation you link also states that python uses an "installation-dependent default". The directories you are seeing in your sys.path are defined in this "installation-depedent default". If you define the PYTHONPATH you can add other directories to sys.path before the default one, but no harm is done without defining it.
Environment variables are defined per-process however shells can provide their own "scope" of variables to the subprocesses they launch. For example you can set environment variables in the shell files like ~/.bashrc or ~/.profile.
If you are on Ubuntu the preferable way of defining a system wide and persisten environment variable is using the pam_enviroment. You can see this question on Ask Ubuntu that shows how you can set a system wide environment variable.
AFAIK there is no standard way of setting them for every (e.g.) linux distro, and, obviously, each OS has its own method of defining them.
If you want a more detailed explanation about environment variables handling you should probably ask on Super User.