what is Python's module search path?

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Stephen Ferg

    what is Python's module search path?

    I need a little help here.

    I'm developing some introductory material on Python for non-programmers.

    The first draft includes this statement. Is this correct?

    -----------------------------------------------------------------
    When loading modules, Python looks for modules
    in the following places in the following order:

    * Python's built-in modules, including modules in the standard library
    * in the /python23/Libs/site-packages directory
    * the directory from which your main module was loaded
    * in directories in PYTHONPATH

    ------------------------------------------------------------------
    Thanks in advance! -- Steve Ferg
  • Rene Pijlman

    #2
    Re: what is Python's module search path?

    Stephen Ferg:[color=blue]
    >I need a little help here.[/color]

    See "6.1.1 The Module Search Path" on
    The official home of the Python Programming Language


    --
    René Pijlman

    Comment

    • Stephen Ferg

      #3
      Re: what is Python's module search path?

      Thanks.

      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?

      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?

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

      Comment

      • Rene Pijlman

        #4
        Re: what is Python's module search path?

        Stephen Ferg:[color=blue]
        >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?[/color]

        I guess it's more than that.

        PythonWin 2.2.2 (#37, Oct 14 2002, 17:02:34) [MSC 32 bit (Intel)] on
        win32.[color=blue][color=green][color=darkred]
        >>> import sys
        >>> print sys.path[/color][/color][/color]
        ['','C:\\Python\ \Python22\\lib\ \site-packages\\Pytho nwin',
        'C:\\Python\\Py thon22\\lib\\si te-packages\\win32 ',
        'C:\\Python\\Py thon22\\lib\\si te-packages\\win32 \\lib',
        'C:\\Python\\Py thon22\\lib\\si te-packages', 'C:\\Python\\Py thon22\\DLLs',
        'C:\\Python\\Py thon22\\lib', 'C:\\Python\\Py thon22\\lib\\li b-tk',
        'C:\\Python\\Py thon22']

        None of these directories qualify for any of the other categories, so
        these must all be in the installation-dependent default.
        [color=blue]
        >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?[/color]

        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?
        [color=blue]
        >Part of what is confusing me is that Lib/site-packages is pretty
        >poorly documented.[/color]

        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

        Comment

        Working...