\section{\module{pkgutil} --- Package extension utility} \declaremodule{standard}{pkgutil} \modulesynopsis{Utilities to support extension of packages.} \versionadded{2.3} \begin{notice}[warning] This is an experimental module. It may be withdrawn or completely changed up to an including the release of Python 2.3 beta 1. \end{notice} This module provides a single function: \begin{funcdesc}{extend_path}{path, name} Extend the search path for the modules which comprise a package. Intended use is to place the following code in a package's \file{__init__.py}: \begin{verbatim} from pkgutil import extend_path __path__ = extend_path(__path__, __name__) \end{verbatim} This will add to the package's \code{__path__} all subdirectories of directories on \code{sys.path} named after the package. This is useful if one wants to distribute different parts of a single logical package as multiple directories. It also looks for \file{*.pkg} files beginning where \code{*} matches the \var{name} argument. This feature is similar to \file{*.pth} files (see the \refmodule{site} module for more information), except that it doesn't special-case lines starting with \code{import}. A \file{*.pkg} file is trusted at face value: apart from checking for duplicates, all entries found in a \file{*.pkg} file are added to the path, regardless of whether they exist the filesystem. (This is a feature.) If the input path is not a list (as is the case for frozen packages) it is returned unchanged. The input path is not modified; an extended copy is returned. Items are only appended to the copy at the end. It is assumed that \code{sys.path} is a sequence. Items of \code{sys.path} that are not (Unicode or 8-bit) strings referring to existing directories are ignored. Unicode items on \code{sys.path} that cause errors when used as filenames may cause this function to raise an exception (in line with \function{os.path.isdir()} behavior). \end{funcdesc}