18.4 Changing the Module Search Path
In Chapter 15, we mentioned that
the
module search path is a list of directories initialized from
environment variable PYTHONPATH, and possibly
.pth path files. What we
haven't shown you until now is how a Python program
can actually change the search path, by changing a built-in list
called sys.path (the path
attribute in the built-in sys module).
sys.path
is initialized on startup, but thereafter, you can delete, append,
and reset its components however you like:
>>> import sys
>>> sys.path
['', 'D:\\PP2ECD-Partial\\Examples', 'C:\\Python22', ...more deleted...]
>>> sys.path = [r'd:\temp'] # Change module search path
>>> sys.path.append('c:\\lp2e\\examples') # for this process only.
>>> sys.path
['d:\\temp', 'c:\\lp2e\\examples']
>>> import string
Traceback (most recent call last):
File "<stdin>", line 1, in ?
ImportError: No module named string
You can use this to dynamically configure a search path inside a
Python program. Be careful: if you delete a critical directory from
the path, you may lose access to critical utilities. In the last
command in the example, we no longer have access to the
string module, since we deleted the Python source
library's directory from the path. Also remember
that such settings only endure for the Python session or program that
made them; they are not retained after Python exits.
|