blob: 63966058000e493fb44c9c1fd1f1413657259d22 [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
Guido van Rossume7ba4952007-06-06 23:52:48 +000072already imported, it will reload the module! The \var{name} argument
Fred Drake2c4f5542000-10-10 22:00:03 +000073indicates the full module name (including the package name, if this is
74a submodule of a package). The \var{file} argument is an open file,
75and \var{filename} is the corresponding file name; these can be
76\code{None} and \code{''}, respectively, when the module is not being
77loaded from a file. The \var{description} argument is a tuple, as
78would be returned by \function{get_suffixes()}, describing what kind
79of module must be loaded.
Guido van Rossum3cdb8f31997-09-09 20:53:37 +000080
81If the load is successful, the return value is the module object;
Fred Drakebccc6401998-03-08 06:41:57 +000082otherwise, an exception (usually \exception{ImportError}) is raised.
Guido van Rossum3cdb8f31997-09-09 20:53:37 +000083
84\strong{Important:} the caller is responsible for closing the
85\var{file} argument, if it was not \code{None}, even when an exception
Fred Drakebccc6401998-03-08 06:41:57 +000086is raised. This is best done using a \keyword{try}
87... \keyword{finally} statement.
Guido van Rossum3cdb8f31997-09-09 20:53:37 +000088\end{funcdesc}
89
90\begin{funcdesc}{new_module}{name}
91Return a new empty module object called \var{name}. This object is
Fred Drakec9a32ab1998-01-07 18:57:01 +000092\emph{not} inserted in \code{sys.modules}.
Guido van Rossum3cdb8f31997-09-09 20:53:37 +000093\end{funcdesc}
94
Tim Peters69232342001-08-30 05:16:13 +000095\begin{funcdesc}{lock_held}{}
Neal Norwitz6b353702002-04-09 18:15:00 +000096Return \code{True} if the import lock is currently held, else \code{False}.
97On platforms without threads, always return \code{False}.
Tim Peters69232342001-08-30 05:16:13 +000098
99On platforms with threads, a thread executing an import holds an internal
100lock until the import is complete.
101This lock blocks other threads from doing an import until the original
102import completes, which in turn prevents other threads from seeing
103incomplete module objects constructed by the original thread while in
104the process of completing its import (and the imports, if any,
105triggered by that).
106\end{funcdesc}
107
Neal Norwitz2294c0d2003-02-12 23:02:21 +0000108\begin{funcdesc}{acquire_lock}{}
109Acquires the interpreter's import lock for the current thread. This lock
110should be used by import hooks to ensure thread-safety when importing modules.
111On platforms without threads, this function does nothing.
112\versionadded{2.3}
113\end{funcdesc}
114
115\begin{funcdesc}{release_lock}{}
116Release the interpreter's import lock.
117On platforms without threads, this function does nothing.
118\versionadded{2.3}
119\end{funcdesc}
120
Guido van Rossum3cdb8f31997-09-09 20:53:37 +0000121The following constants with integer values, defined in this module,
Fred Drakebccc6401998-03-08 06:41:57 +0000122are used to indicate the search result of \function{find_module()}.
Guido van Rossum3cdb8f31997-09-09 20:53:37 +0000123
124\begin{datadesc}{PY_SOURCE}
125The module was found as a source file.
126\end{datadesc}
127
128\begin{datadesc}{PY_COMPILED}
129The module was found as a compiled code object file.
130\end{datadesc}
131
132\begin{datadesc}{C_EXTENSION}
133The module was found as dynamically loadable shared library.
134\end{datadesc}
135
136\begin{datadesc}{PY_RESOURCE}
Brett Cannon7706c2d2005-02-13 22:50:04 +0000137The module was found as a Mac OS 9 resource. This value can only be
138returned on a Mac OS 9 or earlier Macintosh.
Guido van Rossum3cdb8f31997-09-09 20:53:37 +0000139\end{datadesc}
140
141\begin{datadesc}{PKG_DIRECTORY}
142The module was found as a package directory.
143\end{datadesc}
144
145\begin{datadesc}{C_BUILTIN}
146The module was found as a built-in module.
147\end{datadesc}
148
149\begin{datadesc}{PY_FROZEN}
Fred Drakebccc6401998-03-08 06:41:57 +0000150The module was found as a frozen module (see \function{init_frozen()}).
Guido van Rossum3cdb8f31997-09-09 20:53:37 +0000151\end{datadesc}
152
153The following constant and functions are obsolete; their functionality
Fred Drakebccc6401998-03-08 06:41:57 +0000154is available through \function{find_module()} or \function{load_module()}.
Guido van Rossum3cdb8f31997-09-09 20:53:37 +0000155They are kept around for backward compatibility:
156
157\begin{datadesc}{SEARCH_ERROR}
158Unused.
159\end{datadesc}
160
Guido van Rossum946805d1995-01-10 10:51:08 +0000161\begin{funcdesc}{init_builtin}{name}
162Initialize the built-in module called \var{name} and return its module
Thomas Wouters89f507f2006-12-13 04:49:30 +0000163object along with storing it in \code{sys.modules}. If the module was already
164initialized, it will be initialized \emph{again}. Re-initialization involves
165the copying of the built-in module's \code{__dict__} from the cached
166module over the module's entry in \code{sys.modules}. If there is no
Guido van Rossum946805d1995-01-10 10:51:08 +0000167built-in module called \var{name}, \code{None} is returned.
168\end{funcdesc}
169
170\begin{funcdesc}{init_frozen}{name}
171Initialize the frozen module called \var{name} and return its module
172object. If the module was already initialized, it will be initialized
Fred Drakec9a32ab1998-01-07 18:57:01 +0000173\emph{again}. If there is no frozen module called \var{name},
Guido van Rossum946805d1995-01-10 10:51:08 +0000174\code{None} is returned. (Frozen modules are modules written in
175Python whose compiled byte-code object is incorporated into a
Fred Drakebccc6401998-03-08 06:41:57 +0000176custom-built Python interpreter by Python's \program{freeze} utility.
177See \file{Tools/freeze/} for now.)
Guido van Rossum946805d1995-01-10 10:51:08 +0000178\end{funcdesc}
179
180\begin{funcdesc}{is_builtin}{name}
Fred Drakebccc6401998-03-08 06:41:57 +0000181Return \code{1} if there is a built-in module called \var{name} which
182can be initialized again. Return \code{-1} if there is a built-in
183module called \var{name} which cannot be initialized again (see
184\function{init_builtin()}). Return \code{0} if there is no built-in
185module called \var{name}.
Guido van Rossum946805d1995-01-10 10:51:08 +0000186\end{funcdesc}
187
188\begin{funcdesc}{is_frozen}{name}
Neal Norwitz6b353702002-04-09 18:15:00 +0000189Return \code{True} if there is a frozen module (see
190\function{init_frozen()}) called \var{name}, or \code{False} if there is
Fred Drakebccc6401998-03-08 06:41:57 +0000191no such module.
Guido van Rossum946805d1995-01-10 10:51:08 +0000192\end{funcdesc}
193
Johannes Gijsbers8e3bec52004-08-20 14:38:56 +0000194\begin{funcdesc}{load_compiled}{name, pathname, \optional{file}}
Fred Drake64c105d1998-08-11 15:18:45 +0000195\indexii{file}{byte-code}
Guido van Rossum946805d1995-01-10 10:51:08 +0000196Load and initialize a module implemented as a byte-compiled code file
197and return its module object. If the module was already initialized,
Fred Drakec9a32ab1998-01-07 18:57:01 +0000198it will be initialized \emph{again}. The \var{name} argument is used
Guido van Rossum946805d1995-01-10 10:51:08 +0000199to create or access a module object. The \var{pathname} argument
Guido van Rossum4d206541996-06-26 19:21:24 +0000200points to the byte-compiled code file. The \var{file}
Guido van Rossum946805d1995-01-10 10:51:08 +0000201argument is the byte-compiled code file, open for reading in binary
Guido van Rossum4d206541996-06-26 19:21:24 +0000202mode, from the beginning.
203It must currently be a real file object, not a
Guido van Rossum946805d1995-01-10 10:51:08 +0000204user-defined class emulating a file.
205\end{funcdesc}
206
Fred Drakec9a32ab1998-01-07 18:57:01 +0000207\begin{funcdesc}{load_dynamic}{name, pathname\optional{, file}}
Guido van Rossum946805d1995-01-10 10:51:08 +0000208Load and initialize a module implemented as a dynamically loadable
209shared library and return its module object. If the module was
Thomas Wouters89f507f2006-12-13 04:49:30 +0000210already initialized, it will be initialized \emph{again}.
211Re-initialization involves copying the \code{__dict__} attribute of the cached
212instance of the module over the value used in the module cached in
213\code{sys.modules}. The \var{pathname} argument must point to the shared
214library. The \var{name} argument is used to construct the name of the
215initialization function: an external C function called
216\samp{init\var{name}()} in the shared library is called. The optional
217\var{file} argument is ignored. (Note: using shared libraries is highly
218system dependent, and not all systems support it.)
Guido van Rossum946805d1995-01-10 10:51:08 +0000219\end{funcdesc}
220
Johannes Gijsbers8e3bec52004-08-20 14:38:56 +0000221\begin{funcdesc}{load_source}{name, pathname\optional{, file}}
Guido van Rossum946805d1995-01-10 10:51:08 +0000222Load and initialize a module implemented as a Python source file and
223return its module object. If the module was already initialized, it
Fred Drakec9a32ab1998-01-07 18:57:01 +0000224will be initialized \emph{again}. The \var{name} argument is used to
Guido van Rossum946805d1995-01-10 10:51:08 +0000225create or access a module object. The \var{pathname} argument points
Guido van Rossum4d206541996-06-26 19:21:24 +0000226to the source file. The \var{file} argument is the source
227file, open for reading as text, from the beginning.
228It must currently be a real file
Guido van Rossum946805d1995-01-10 10:51:08 +0000229object, not a user-defined class emulating a file. Note that if a
Fred Drake64c105d1998-08-11 15:18:45 +0000230properly matching byte-compiled file (with suffix \file{.pyc} or
231\file{.pyo}) exists, it will be used instead of parsing the given
232source file.
Guido van Rossum946805d1995-01-10 10:51:08 +0000233\end{funcdesc}
234
Thomas Wouters0e3f5912006-08-11 14:57:12 +0000235\begin{classdesc}{NullImporter}{path_string}
236The \class{NullImporter} type is a \pep{302} import hook that handles
237non-directory path strings by failing to find any modules. Calling this
238type with an existing directory or empty string raises
239\exception{ImportError}. Otherwise, a \class{NullImporter} instance is
240returned.
241
242Python adds instances of this type to \code{sys.path_importer_cache} for
243any path entries that are not directories and are not handled by any other
244path hooks on \code{sys.path_hooks}. Instances have only one method:
245
246\begin{methoddesc}{find_module}{fullname \optional{, path}}
247This method always returns \code{None}, indicating that the requested
248module could not be found.
249\end{methoddesc}
250
251\versionadded{2.5}
252\end{classdesc}
Fred Drakec83db331998-02-19 20:50:52 +0000253
Guido van Rossum946805d1995-01-10 10:51:08 +0000254\subsection{Examples}
Fred Drakec83db331998-02-19 20:50:52 +0000255\label{examples-imp}
256
Guido van Rossum3cdb8f31997-09-09 20:53:37 +0000257The following function emulates what was the standard import statement
Fred Drake91f2f262001-07-06 19:28:48 +0000258up to Python 1.4 (no hierarchical module names). (This
Guido van Rossum3cdb8f31997-09-09 20:53:37 +0000259\emph{implementation} wouldn't work in that version, since
Fred Drakebccc6401998-03-08 06:41:57 +0000260\function{find_module()} has been extended and
261\function{load_module()} has been added in 1.4.)
Guido van Rossum946805d1995-01-10 10:51:08 +0000262
Fred Drake19479911998-02-13 06:58:54 +0000263\begin{verbatim}
Fred Drake90badd12001-01-17 05:12:13 +0000264import imp
265import sys
Guido van Rossum946805d1995-01-10 10:51:08 +0000266
Guido van Rossum4f4c9b41995-02-15 15:52:13 +0000267def __import__(name, globals=None, locals=None, fromlist=None):
Guido van Rossum470be141995-03-17 16:07:09 +0000268 # Fast path: see if the module has already been imported.
Guido van Rossum3cdb8f31997-09-09 20:53:37 +0000269 try:
Guido van Rossum470be141995-03-17 16:07:09 +0000270 return sys.modules[name]
Guido van Rossum3cdb8f31997-09-09 20:53:37 +0000271 except KeyError:
272 pass
Guido van Rossum946805d1995-01-10 10:51:08 +0000273
Guido van Rossum470be141995-03-17 16:07:09 +0000274 # If any of the following calls raises an exception,
Guido van Rossum96628a91995-04-10 11:34:00 +0000275 # there's a problem we can't handle -- let the caller handle it.
Guido van Rossum470be141995-03-17 16:07:09 +0000276
Guido van Rossum3cdb8f31997-09-09 20:53:37 +0000277 fp, pathname, description = imp.find_module(name)
Thomas Wouters0e3f5912006-08-11 14:57:12 +0000278
Guido van Rossumd6ac3801995-07-07 23:01:27 +0000279 try:
Guido van Rossum3cdb8f31997-09-09 20:53:37 +0000280 return imp.load_module(name, fp, pathname, description)
Guido van Rossumd6ac3801995-07-07 23:01:27 +0000281 finally:
282 # Since we may exit via an exception, close fp explicitly.
Guido van Rossum3cdb8f31997-09-09 20:53:37 +0000283 if fp:
284 fp.close()
Fred Drake19479911998-02-13 06:58:54 +0000285\end{verbatim}
Guido van Rossum3cdb8f31997-09-09 20:53:37 +0000286
287A more complete example that implements hierarchical module names and
Guido van Rossume7ba4952007-06-06 23:52:48 +0000288includes a \function{reload()} function can be
Fred Drakebc82ab12002-04-08 05:22:30 +0000289found in the module \module{knee}\refmodindex{knee}. The
290\module{knee} module can be found in \file{Demo/imputil/} in the
291Python source distribution.