blob: 972128f6b68e0d6083aea84b83aee681268aee03 [file] [log] [blame]
Fred Drake295da241998-08-10 19:42:37 +00001\section{\module{imp} ---
Fred Drake4a406c61999-04-22 20:52:44 +00002 Access the \keyword{import} internals}
Fred Drakeb91e9341998-07-23 17:59:49 +00003
Fred Drake4a406c61999-04-22 20:52:44 +00004\declaremodule{builtin}{imp}
Fred Drakeb91e9341998-07-23 17:59:49 +00005\modulesynopsis{Access the implementation of the \keyword{import} statement.}
6
Guido van Rossum946805d1995-01-10 10:51:08 +00007
Fred Drake28b17701999-06-10 22:08:16 +00008This\stindex{import} module provides an interface to the mechanisms
Fred Drake4a406c61999-04-22 20:52:44 +00009used to implement the \keyword{import} statement. It defines the
10following constants and functions:
Guido van Rossum946805d1995-01-10 10:51:08 +000011
Guido van Rossum946805d1995-01-10 10:51:08 +000012
13\begin{funcdesc}{get_magic}{}
Fred Drake64c105d1998-08-11 15:18:45 +000014\indexii{file}{byte-code}
Guido van Rossum470be141995-03-17 16:07:09 +000015Return the magic string value used to recognize byte-compiled code
Fred Drake64c105d1998-08-11 15:18:45 +000016files (\file{.pyc} files). (This value may be different for each
Guido van Rossum3cdb8f31997-09-09 20:53:37 +000017Python version.)
Guido van Rossum946805d1995-01-10 10:51:08 +000018\end{funcdesc}
19
20\begin{funcdesc}{get_suffixes}{}
Guido van Rossum3cdb8f31997-09-09 20:53:37 +000021Return a list of triples, each describing a particular type of module.
Guido van Rossum946805d1995-01-10 10:51:08 +000022Each triple has the form \code{(\var{suffix}, \var{mode},
23\var{type})}, where \var{suffix} is a string to be appended to the
24module name to form the filename to search for, \var{mode} is the mode
Fred Drake64c105d1998-08-11 15:18:45 +000025string to pass to the built-in \function{open()} function to open the
26file (this can be \code{'r'} for text files or \code{'rb'} for binary
Guido van Rossum946805d1995-01-10 10:51:08 +000027files), and \var{type} is the file type, which has one of the values
Fred Drakebccc6401998-03-08 06:41:57 +000028\constant{PY_SOURCE}, \constant{PY_COMPILED}, or
29\constant{C_EXTENSION}, described below.
Guido van Rossum946805d1995-01-10 10:51:08 +000030\end{funcdesc}
31
Fred Drakec9a32ab1998-01-07 18:57:01 +000032\begin{funcdesc}{find_module}{name\optional{, path}}
Guido van Rossum3cdb8f31997-09-09 20:53:37 +000033Try to find the module \var{name} on the search path \var{path}. If
34\var{path} is a list of directory names, each directory is searched
Fred Drakebccc6401998-03-08 06:41:57 +000035for files with any of the suffixes returned by \function{get_suffixes()}
Guido van Rossum3cdb8f31997-09-09 20:53:37 +000036above. Invalid names in the list are silently ignored (but all list
37items must be strings). If \var{path} is omitted or \code{None}, the
38list of directory names given by \code{sys.path} is searched, but
39first it searches a few special places: it tries to find a built-in
Fred Drakebccc6401998-03-08 06:41:57 +000040module with the given name (\constant{C_BUILTIN}), then a frozen module
41(\constant{PY_FROZEN}), and on some systems some other places are looked
42in as well (on the Mac, it looks for a resource (\constant{PY_RESOURCE});
Guido van Rossum3cdb8f31997-09-09 20:53:37 +000043on Windows, it looks in the registry which may point to a specific
44file).
45
46If search is successful, the return value is a triple
Guido van Rossum946805d1995-01-10 10:51:08 +000047\code{(\var{file}, \var{pathname}, \var{description})} where
Guido van Rossum470be141995-03-17 16:07:09 +000048\var{file} is an open file object positioned at the beginning,
49\var{pathname} is the pathname of the
Guido van Rossum946805d1995-01-10 10:51:08 +000050file found, and \var{description} is a triple as contained in the list
Fred Drakebccc6401998-03-08 06:41:57 +000051returned by \function{get_suffixes()} describing the kind of module found.
Guido van Rossum3cdb8f31997-09-09 20:53:37 +000052If the module does not live in a file, the returned \var{file} is
53\code{None}, \var{filename} is the empty string, and the
54\var{description} tuple contains empty strings for its suffix and
Thomas Woutersf8316632000-07-16 19:01:10 +000055mode; the module type is as indicate in parentheses above. If the
Fred Drakebccc6401998-03-08 06:41:57 +000056search is unsuccessful, \exception{ImportError} is raised. Other
Guido van Rossum3cdb8f31997-09-09 20:53:37 +000057exceptions indicate problems with the arguments or environment.
58
59This function does not handle hierarchical module names (names
Fred Drake91f2f262001-07-06 19:28:48 +000060containing dots). In order to find \var{P}.\var{M}, that is, submodule
Fred Drakebccc6401998-03-08 06:41:57 +000061\var{M} of package \var{P}, use \function{find_module()} and
62\function{load_module()} to find and load package \var{P}, and then use
63\function{find_module()} with the \var{path} argument set to
Guido van Rossum3cdb8f31997-09-09 20:53:37 +000064\code{\var{P}.__path__}. When \var{P} itself has a dotted name, apply
65this recipe recursively.
Guido van Rossum946805d1995-01-10 10:51:08 +000066\end{funcdesc}
67
Guido van Rossum3cdb8f31997-09-09 20:53:37 +000068\begin{funcdesc}{load_module}{name, file, filename, description}
Fred Drakebccc6401998-03-08 06:41:57 +000069Load a module that was previously found by \function{find_module()} (or by
Guido van Rossum3cdb8f31997-09-09 20:53:37 +000070an otherwise conducted search yielding compatible results). This
71function does more than importing the module: if the module was
Fred Drakebccc6401998-03-08 06:41:57 +000072already imported, it is equivalent to a
Fred Drake2c4f5542000-10-10 22:00:03 +000073\function{reload()}\bifuncindex{reload}! The \var{name} argument
74indicates the full module name (including the package name, if this is
75a submodule of a package). The \var{file} argument is an open file,
76and \var{filename} is the corresponding file name; these can be
77\code{None} and \code{''}, respectively, when the module is not being
78loaded from a file. The \var{description} argument is a tuple, as
79would be returned by \function{get_suffixes()}, describing what kind
80of module must be loaded.
Guido van Rossum3cdb8f31997-09-09 20:53:37 +000081
82If the load is successful, the return value is the module object;
Fred Drakebccc6401998-03-08 06:41:57 +000083otherwise, an exception (usually \exception{ImportError}) is raised.
Guido van Rossum3cdb8f31997-09-09 20:53:37 +000084
85\strong{Important:} the caller is responsible for closing the
86\var{file} argument, if it was not \code{None}, even when an exception
Fred Drakebccc6401998-03-08 06:41:57 +000087is raised. This is best done using a \keyword{try}
88... \keyword{finally} statement.
Guido van Rossum3cdb8f31997-09-09 20:53:37 +000089\end{funcdesc}
90
91\begin{funcdesc}{new_module}{name}
92Return a new empty module object called \var{name}. This object is
Fred Drakec9a32ab1998-01-07 18:57:01 +000093\emph{not} inserted in \code{sys.modules}.
Guido van Rossum3cdb8f31997-09-09 20:53:37 +000094\end{funcdesc}
95
Tim Peters69232342001-08-30 05:16:13 +000096\begin{funcdesc}{lock_held}{}
97Return 1 if the import lock is currently held, else 0.
98On platforms without threads, always return 0.
99
100On platforms with threads, a thread executing an import holds an internal
101lock until the import is complete.
102This lock blocks other threads from doing an import until the original
103import completes, which in turn prevents other threads from seeing
104incomplete module objects constructed by the original thread while in
105the process of completing its import (and the imports, if any,
106triggered by that).
107\end{funcdesc}
108
Guido van Rossum3cdb8f31997-09-09 20:53:37 +0000109The following constants with integer values, defined in this module,
Fred Drakebccc6401998-03-08 06:41:57 +0000110are used to indicate the search result of \function{find_module()}.
Guido van Rossum3cdb8f31997-09-09 20:53:37 +0000111
112\begin{datadesc}{PY_SOURCE}
113The module was found as a source file.
114\end{datadesc}
115
116\begin{datadesc}{PY_COMPILED}
117The module was found as a compiled code object file.
118\end{datadesc}
119
120\begin{datadesc}{C_EXTENSION}
121The module was found as dynamically loadable shared library.
122\end{datadesc}
123
124\begin{datadesc}{PY_RESOURCE}
125The module was found as a Macintosh resource. This value can only be
126returned on a Macintosh.
127\end{datadesc}
128
129\begin{datadesc}{PKG_DIRECTORY}
130The module was found as a package directory.
131\end{datadesc}
132
133\begin{datadesc}{C_BUILTIN}
134The module was found as a built-in module.
135\end{datadesc}
136
137\begin{datadesc}{PY_FROZEN}
Fred Drakebccc6401998-03-08 06:41:57 +0000138The module was found as a frozen module (see \function{init_frozen()}).
Guido van Rossum3cdb8f31997-09-09 20:53:37 +0000139\end{datadesc}
140
141The following constant and functions are obsolete; their functionality
Fred Drakebccc6401998-03-08 06:41:57 +0000142is available through \function{find_module()} or \function{load_module()}.
Guido van Rossum3cdb8f31997-09-09 20:53:37 +0000143They are kept around for backward compatibility:
144
145\begin{datadesc}{SEARCH_ERROR}
146Unused.
147\end{datadesc}
148
Guido van Rossum946805d1995-01-10 10:51:08 +0000149\begin{funcdesc}{init_builtin}{name}
150Initialize the built-in module called \var{name} and return its module
151object. If the module was already initialized, it will be initialized
Fred Drakec9a32ab1998-01-07 18:57:01 +0000152\emph{again}. A few modules cannot be initialized twice --- attempting
Fred Drakebccc6401998-03-08 06:41:57 +0000153to initialize these again will raise an \exception{ImportError}
154exception. If there is no
Guido van Rossum946805d1995-01-10 10:51:08 +0000155built-in module called \var{name}, \code{None} is returned.
156\end{funcdesc}
157
158\begin{funcdesc}{init_frozen}{name}
159Initialize the frozen module called \var{name} and return its module
160object. If the module was already initialized, it will be initialized
Fred Drakec9a32ab1998-01-07 18:57:01 +0000161\emph{again}. If there is no frozen module called \var{name},
Guido van Rossum946805d1995-01-10 10:51:08 +0000162\code{None} is returned. (Frozen modules are modules written in
163Python whose compiled byte-code object is incorporated into a
Fred Drakebccc6401998-03-08 06:41:57 +0000164custom-built Python interpreter by Python's \program{freeze} utility.
165See \file{Tools/freeze/} for now.)
Guido van Rossum946805d1995-01-10 10:51:08 +0000166\end{funcdesc}
167
168\begin{funcdesc}{is_builtin}{name}
Fred Drakebccc6401998-03-08 06:41:57 +0000169Return \code{1} if there is a built-in module called \var{name} which
170can be initialized again. Return \code{-1} if there is a built-in
171module called \var{name} which cannot be initialized again (see
172\function{init_builtin()}). Return \code{0} if there is no built-in
173module called \var{name}.
Guido van Rossum946805d1995-01-10 10:51:08 +0000174\end{funcdesc}
175
176\begin{funcdesc}{is_frozen}{name}
Fred Drakebccc6401998-03-08 06:41:57 +0000177Return \code{1} if there is a frozen module (see
178\function{init_frozen()}) called \var{name}, or \code{0} if there is
179no such module.
Guido van Rossum946805d1995-01-10 10:51:08 +0000180\end{funcdesc}
181
Fred Drakec9a32ab1998-01-07 18:57:01 +0000182\begin{funcdesc}{load_compiled}{name, pathname, file}
Fred Drake64c105d1998-08-11 15:18:45 +0000183\indexii{file}{byte-code}
Guido van Rossum946805d1995-01-10 10:51:08 +0000184Load and initialize a module implemented as a byte-compiled code file
185and return its module object. If the module was already initialized,
Fred Drakec9a32ab1998-01-07 18:57:01 +0000186it will be initialized \emph{again}. The \var{name} argument is used
Guido van Rossum946805d1995-01-10 10:51:08 +0000187to create or access a module object. The \var{pathname} argument
Guido van Rossum4d206541996-06-26 19:21:24 +0000188points to the byte-compiled code file. The \var{file}
Guido van Rossum946805d1995-01-10 10:51:08 +0000189argument is the byte-compiled code file, open for reading in binary
Guido van Rossum4d206541996-06-26 19:21:24 +0000190mode, from the beginning.
191It must currently be a real file object, not a
Guido van Rossum946805d1995-01-10 10:51:08 +0000192user-defined class emulating a file.
193\end{funcdesc}
194
Fred Drakec9a32ab1998-01-07 18:57:01 +0000195\begin{funcdesc}{load_dynamic}{name, pathname\optional{, file}}
Guido van Rossum946805d1995-01-10 10:51:08 +0000196Load and initialize a module implemented as a dynamically loadable
197shared library and return its module object. If the module was
Fred Drakec9a32ab1998-01-07 18:57:01 +0000198already initialized, it will be initialized \emph{again}. Some modules
Guido van Rossum946805d1995-01-10 10:51:08 +0000199don't like that and may raise an exception. The \var{pathname}
200argument must point to the shared library. The \var{name} argument is
201used to construct the name of the initialization function: an external
Fred Drakebccc6401998-03-08 06:41:57 +0000202C function called \samp{init\var{name}()} in the shared library is
Thomas Woutersf8316632000-07-16 19:01:10 +0000203called. The optional \var{file} argument is ignored. (Note: using
Guido van Rossum946805d1995-01-10 10:51:08 +0000204shared libraries is highly system dependent, and not all systems
205support it.)
206\end{funcdesc}
207
Fred Drakecce10901998-03-17 06:33:25 +0000208\begin{funcdesc}{load_source}{name, pathname, file}
Guido van Rossum946805d1995-01-10 10:51:08 +0000209Load and initialize a module implemented as a Python source file and
210return its module object. If the module was already initialized, it
Fred Drakec9a32ab1998-01-07 18:57:01 +0000211will be initialized \emph{again}. The \var{name} argument is used to
Guido van Rossum946805d1995-01-10 10:51:08 +0000212create or access a module object. The \var{pathname} argument points
Guido van Rossum4d206541996-06-26 19:21:24 +0000213to the source file. The \var{file} argument is the source
214file, open for reading as text, from the beginning.
215It must currently be a real file
Guido van Rossum946805d1995-01-10 10:51:08 +0000216object, not a user-defined class emulating a file. Note that if a
Fred Drake64c105d1998-08-11 15:18:45 +0000217properly matching byte-compiled file (with suffix \file{.pyc} or
218\file{.pyo}) exists, it will be used instead of parsing the given
219source file.
Guido van Rossum946805d1995-01-10 10:51:08 +0000220\end{funcdesc}
221
Fred Drakec83db331998-02-19 20:50:52 +0000222
Guido van Rossum946805d1995-01-10 10:51:08 +0000223\subsection{Examples}
Fred Drakec83db331998-02-19 20:50:52 +0000224\label{examples-imp}
225
Guido van Rossum3cdb8f31997-09-09 20:53:37 +0000226The following function emulates what was the standard import statement
Fred Drake91f2f262001-07-06 19:28:48 +0000227up to Python 1.4 (no hierarchical module names). (This
Guido van Rossum3cdb8f31997-09-09 20:53:37 +0000228\emph{implementation} wouldn't work in that version, since
Fred Drakebccc6401998-03-08 06:41:57 +0000229\function{find_module()} has been extended and
230\function{load_module()} has been added in 1.4.)
Guido van Rossum946805d1995-01-10 10:51:08 +0000231
Fred Drake19479911998-02-13 06:58:54 +0000232\begin{verbatim}
Fred Drake90badd12001-01-17 05:12:13 +0000233import imp
234import sys
Guido van Rossum946805d1995-01-10 10:51:08 +0000235
Guido van Rossum4f4c9b41995-02-15 15:52:13 +0000236def __import__(name, globals=None, locals=None, fromlist=None):
Guido van Rossum470be141995-03-17 16:07:09 +0000237 # Fast path: see if the module has already been imported.
Guido van Rossum3cdb8f31997-09-09 20:53:37 +0000238 try:
Guido van Rossum470be141995-03-17 16:07:09 +0000239 return sys.modules[name]
Guido van Rossum3cdb8f31997-09-09 20:53:37 +0000240 except KeyError:
241 pass
Guido van Rossum946805d1995-01-10 10:51:08 +0000242
Guido van Rossum470be141995-03-17 16:07:09 +0000243 # If any of the following calls raises an exception,
Guido van Rossum96628a91995-04-10 11:34:00 +0000244 # there's a problem we can't handle -- let the caller handle it.
Guido van Rossum470be141995-03-17 16:07:09 +0000245
Guido van Rossum3cdb8f31997-09-09 20:53:37 +0000246 fp, pathname, description = imp.find_module(name)
247
Guido van Rossumd6ac3801995-07-07 23:01:27 +0000248 try:
Guido van Rossum3cdb8f31997-09-09 20:53:37 +0000249 return imp.load_module(name, fp, pathname, description)
Guido van Rossumd6ac3801995-07-07 23:01:27 +0000250 finally:
251 # Since we may exit via an exception, close fp explicitly.
Guido van Rossum3cdb8f31997-09-09 20:53:37 +0000252 if fp:
253 fp.close()
Fred Drake19479911998-02-13 06:58:54 +0000254\end{verbatim}
Guido van Rossum3cdb8f31997-09-09 20:53:37 +0000255
256A more complete example that implements hierarchical module names and
Fred Drakebccc6401998-03-08 06:41:57 +0000257includes a \function{reload()}\bifuncindex{reload} function can be
Fred Drakebc82ab12002-04-08 05:22:30 +0000258found in the module \module{knee}\refmodindex{knee}. The
259\module{knee} module can be found in \file{Demo/imputil/} in the
260Python source distribution.