Most of the stuff is set up in Python’s site.py
which is automatically imported when starting the interpreter (unless you start it with the -S
option). Few paths are set up in the interpreter itself during initialization (you can find out which by starting python with -S
).
Additionally, some frameworks (like Django I think) modify sys.path
upon startup to meet their requirements.
The site
module has a pretty good documentation, a commented source code and prints out some information if you run it via python -m site
.