Python searches for the modules and packages in the predefined directories on the operating system. It creates a list of those places and keeps them in a list.
import sys
sys.path
for i in sys.path:
print (i)
Output
/Users/naren/Documents/courses/Programming_languages_for_bioinformatics/python_paths
/Users/naren/opt/anaconda3/lib/python37.zip
/Users/naren/opt/anaconda3/lib/python3.7
/Users/naren/opt/anaconda3/lib/python3.7/lib-dynload
/Users/naren/opt/anaconda3/lib/python3.7/site-packages
/Users/naren/opt/anaconda3/lib/python3.7/site-packages/aeosa
/Users/naren/opt/anaconda3/lib/python3.7/site-packages/IPython/extensions
/Users/naren/.ipython
sys.path
is simply a list which could be modified in the usuall way a list is modified (e.g. sys.path.append()
, sys.path.extend()
)
PYTHONPATH
PYTHONPATH
is an environment variable that could be set before runing python script. PYTHONPATH
contains a semicolon separated list of directories that will be searched for modules when import
is issued. The list get appended to the sys.path
list
Setting PYTHONPATH
# on mac and linux
export PYTHONPATH='/some/extra/path'
# on windows
set PYTHONPATH='/some/extra/path'
The directories defined by PYTHONPATH
will be appended to sys.path list
Checking PYTHONPATH
os.environ
is a dictionary that stores the environmental variables as a key-value pairs.
import os
# Will report an error if PYTHONPATH is not set
os.environ['PYTHONPATH']
# printing all the directories set by pythonpath
for i in os.environ['PYTHONPATH'].split(os.pathsep):
print (i)
# listing all environmental variables
for k,v in os.environ.items():
print ( "%20s is set to %s" % (k,v) )
PYTHONHOME
PYTHONHOME
is a evrironmental variable that is related to PYTHONPATH
. If PYTHONHOME
is set it defines where the standard python libraries are sitting and supplements PYTHONPATH.
SITE
MODULE
The site module may be used to modify the paths to sys.path
import site
import sys
site.addsitedir('/my/new/dir')
sys.path