what is Python's module search path?

Rene Pijlman reply.in.the.newsgroup at my.address.is.invalid
Fri Jan 9 02:11:28 EST 2004


Stephen Ferg:
>It says """When a module named spam is imported, the interpreter
>searches for a file named spam.py in the current directory, and then
>in the list of directories specified by the environment variable
>PYTHONPATH. ... When PYTHONPATH is not set, or when the file is not
>found there, the search continues in an installation-dependent default
>path; on Unix, this is usually .:/usr/local/lib/python.
>
>Actually, modules are searched in the list of directories given by the
>variable sys.path which is initialized from the directory containing
>the input script (or the current directory), PYTHONPATH and the
>installation-dependent default."""
>
>Is the installation-dependent default path on Windows usually
>Lib/site-packages?

I guess it's more than that.

PythonWin 2.2.2 (#37, Oct 14 2002, 17:02:34) [MSC 32 bit (Intel)] on
win32.
>>> import sys
>>> print sys.path
['','C:\\Python\\Python22\\lib\\site-packages\\Pythonwin',
'C:\\Python\\Python22\\lib\\site-packages\\win32',
'C:\\Python\\Python22\\lib\\site-packages\\win32\\lib',
'C:\\Python\\Python22\\lib\\site-packages', 'C:\\Python\\Python22\\DLLs',
'C:\\Python\\Python22\\lib', 'C:\\Python\\Python22\\lib\\lib-tk',
'C:\\Python\\Python22']

None of these directories qualify for any of the other categories, so
these must all be in the installation-dependent default.

>If so, then it looks like my original search order was wrong, 
>and the correct search order (on Windows) is:
>
>---------------------------------------------------------
> * Python's built-in modules, including modules in the standard
>library
> * the directory from which your main module was loaded
> * in directories in PYTHONPATH
> * in the /python23/Libs/site-packages directory
>--------------------------------------------------------
>
>Is that correct?

Well no, I don't think so. The tutorial doesn't say that the modules in
the standard library are searched first. It says the current directory is
first, which you don't even mention. And the tutorial says sys.path is
searched, which may be modified by the program.

Why are you trying to rephrase the tutorial, when the tutorial is
perfectly clear?

>Part of what is confusing me is that Lib/site-packages is pretty
>poorly documented.

It doesn't have to be, for ordinary users. My guess is the documentation
is in this area: http://www.python.org/sigs/distutils-sig/doc/

-- 
René Pijlman



More information about the Python-list mailing list