blob: 7d4bf4facf895fb1ff4cc215519ea64d2310cb20 [file] [log] [blame]
R David Murraybca1a262013-04-18 09:51:17 -04001:mod:`imp` --- Access the :ref:`import <importsystem>` internals
2================================================================
Georg Brandl116aa622007-08-15 14:28:22 +00003
4.. module:: imp
5 :synopsis: Access the implementation of the import statement.
6
7
8.. index:: statement: import
9
10This module provides an interface to the mechanisms used to implement the
11:keyword:`import` statement. It defines the following constants and functions:
12
13
R David Murraybca1a262013-04-18 09:51:17 -040014.. note::
15 New programs should use :mod:`importlib` rather than this module.
16
17
Georg Brandl116aa622007-08-15 14:28:22 +000018.. function:: get_magic()
19
20 .. index:: pair: file; byte-code
21
22 Return the magic string value used to recognize byte-compiled code files
23 (:file:`.pyc` files). (This value may be different for each Python version.)
24
25
26.. function:: get_suffixes()
27
Guido van Rossum04110fb2007-08-24 16:32:05 +000028 Return a list of 3-element tuples, each describing a particular type of
29 module. Each triple has the form ``(suffix, mode, type)``, where *suffix* is
30 a string to be appended to the module name to form the filename to search
31 for, *mode* is the mode string to pass to the built-in :func:`open` function
32 to open the file (this can be ``'r'`` for text files or ``'rb'`` for binary
33 files), and *type* is the file type, which has one of the values
34 :const:`PY_SOURCE`, :const:`PY_COMPILED`, or :const:`C_EXTENSION`, described
35 below.
Georg Brandl116aa622007-08-15 14:28:22 +000036
Brett Cannoncb66eb02012-05-11 12:58:42 -040037 .. deprecated:: 3.3
38 Use the constants defined on :mod:`importlib.machinery` instead.
39
Georg Brandl116aa622007-08-15 14:28:22 +000040
41.. function:: find_module(name[, path])
42
Alexandre Vassalotti711ed4a2009-07-17 10:42:05 +000043 Try to find the module *name*. If *path* is omitted or ``None``, the list of
44 directory names given by ``sys.path`` is searched, but first a few special
45 places are searched: the function tries to find a built-in module with the
46 given name (:const:`C_BUILTIN`), then a frozen module (:const:`PY_FROZEN`),
47 and on some systems some other places are looked in as well (on Windows, it
48 looks in the registry which may point to a specific file).
49
50 Otherwise, *path* must be a list of directory names; each directory is
51 searched for files with any of the suffixes returned by :func:`get_suffixes`
52 above. Invalid names in the list are silently ignored (but all list items
53 must be strings).
Georg Brandl116aa622007-08-15 14:28:22 +000054
Guido van Rossum04110fb2007-08-24 16:32:05 +000055 If search is successful, the return value is a 3-element tuple ``(file,
56 pathname, description)``:
57
Antoine Pitrou11cb9612010-09-15 11:11:28 +000058 *file* is an open :term:`file object` positioned at the beginning, *pathname*
59 is the pathname of the file found, and *description* is a 3-element tuple as
Georg Brandl116aa622007-08-15 14:28:22 +000060 contained in the list returned by :func:`get_suffixes` describing the kind of
Guido van Rossum04110fb2007-08-24 16:32:05 +000061 module found.
Georg Brandl116aa622007-08-15 14:28:22 +000062
Guido van Rossum04110fb2007-08-24 16:32:05 +000063 If the module does not live in a file, the returned *file* is ``None``,
64 *pathname* is the empty string, and the *description* tuple contains empty
65 strings for its suffix and mode; the module type is indicated as given in
66 parentheses above. If the search is unsuccessful, :exc:`ImportError` is
67 raised. Other exceptions indicate problems with the arguments or
68 environment.
69
70 If the module is a package, *file* is ``None``, *pathname* is the package
71 path and the last item in the *description* tuple is :const:`PKG_DIRECTORY`.
72
73 This function does not handle hierarchical module names (names containing
Senthil Kumarancc497902012-04-10 19:51:00 +080074 dots). In order to find *P.M*, that is, submodule *M* of package *P*, use
Georg Brandl116aa622007-08-15 14:28:22 +000075 :func:`find_module` and :func:`load_module` to find and load package *P*, and
76 then use :func:`find_module` with the *path* argument set to ``P.__path__``.
77 When *P* itself has a dotted name, apply this recipe recursively.
78
Brett Cannon62961dd2012-05-13 13:04:21 -040079 .. deprecated:: 3.3
80 Use :func:`importlib.find_loader` instead.
81
Georg Brandl116aa622007-08-15 14:28:22 +000082
Guido van Rossum04110fb2007-08-24 16:32:05 +000083.. function:: load_module(name, file, pathname, description)
Georg Brandl116aa622007-08-15 14:28:22 +000084
85 Load a module that was previously found by :func:`find_module` (or by an
86 otherwise conducted search yielding compatible results). This function does
87 more than importing the module: if the module was already imported, it will
Guido van Rossum04110fb2007-08-24 16:32:05 +000088 reload the module! The *name* argument indicates the full
89 module name (including the package name, if this is a submodule of a
90 package). The *file* argument is an open file, and *pathname* is the
91 corresponding file name; these can be ``None`` and ``''``, respectively, when
92 the module is a package or not being loaded from a file. The *description*
93 argument is a tuple, as would be returned by :func:`get_suffixes`, describing
94 what kind of module must be loaded.
Georg Brandl116aa622007-08-15 14:28:22 +000095
Guido van Rossum04110fb2007-08-24 16:32:05 +000096 If the load is successful, the return value is the module object; otherwise,
97 an exception (usually :exc:`ImportError`) is raised.
Georg Brandl116aa622007-08-15 14:28:22 +000098
Guido van Rossum04110fb2007-08-24 16:32:05 +000099 **Important:** the caller is responsible for closing the *file* argument, if
100 it was not ``None``, even when an exception is raised. This is best done
101 using a :keyword:`try` ... :keyword:`finally` statement.
Georg Brandl116aa622007-08-15 14:28:22 +0000102
Brett Cannon62961dd2012-05-13 13:04:21 -0400103 .. deprecated:: 3.3
104 Unneeded as loaders should be used to load modules and
105 :func:`find_module` is deprecated.
106
Georg Brandl116aa622007-08-15 14:28:22 +0000107
108.. function:: new_module(name)
109
110 Return a new empty module object called *name*. This object is *not* inserted
111 in ``sys.modules``.
112
113
Christian Heimes043d6f62008-01-07 17:19:16 +0000114.. function:: reload(module)
115
116 Reload a previously imported *module*. The argument must be a module object, so
117 it must have been successfully imported before. This is useful if you have
118 edited the module source file using an external editor and want to try out the
119 new version without leaving the Python interpreter. The return value is the
120 module object (the same as the *module* argument).
121
122 When ``reload(module)`` is executed:
123
124 * Python modules' code is recompiled and the module-level code reexecuted,
125 defining a new set of objects which are bound to names in the module's
126 dictionary. The ``init`` function of extension modules is not called a second
127 time.
128
129 * As with all other objects in Python the old objects are only reclaimed after
130 their reference counts drop to zero.
131
132 * The names in the module namespace are updated to point to any new or changed
133 objects.
134
135 * Other references to the old objects (such as names external to the module) are
136 not rebound to refer to the new objects and must be updated in each namespace
137 where they occur if that is desired.
138
139 There are a number of other caveats:
140
141 If a module is syntactically correct but its initialization fails, the first
142 :keyword:`import` statement for it does not bind its name locally, but does
143 store a (partially initialized) module object in ``sys.modules``. To reload the
144 module you must first :keyword:`import` it again (this will bind the name to the
145 partially initialized module object) before you can :func:`reload` it.
146
147 When a module is reloaded, its dictionary (containing the module's global
148 variables) is retained. Redefinitions of names will override the old
149 definitions, so this is generally not a problem. If the new version of a module
150 does not define a name that was defined by the old version, the old definition
151 remains. This feature can be used to the module's advantage if it maintains a
152 global table or cache of objects --- with a :keyword:`try` statement it can test
153 for the table's presence and skip its initialization if desired::
154
155 try:
156 cache
157 except NameError:
158 cache = {}
159
160 It is legal though generally not very useful to reload built-in or dynamically
161 loaded modules, except for :mod:`sys`, :mod:`__main__` and :mod:`__builtin__`.
162 In many cases, however, extension modules are not designed to be initialized
163 more than once, and may fail in arbitrary ways when reloaded.
164
165 If a module imports objects from another module using :keyword:`from` ...
166 :keyword:`import` ..., calling :func:`reload` for the other module does not
167 redefine the objects imported from it --- one way around this is to re-execute
168 the :keyword:`from` statement, another is to use :keyword:`import` and qualified
169 names (*module*.*name*) instead.
170
171 If a module instantiates instances of a class, reloading the module that defines
172 the class does not affect the method definitions of the instances --- they
173 continue to use the old class definition. The same is true for derived classes.
174
175
Éric Araujo930df312010-12-16 06:28:48 +0000176The following functions are conveniences for handling :pep:`3147` byte-compiled
177file paths.
Barry Warsaw28a691b2010-04-17 00:19:56 +0000178
179.. versionadded:: 3.2
180
181.. function:: cache_from_source(path, debug_override=None)
182
Victor Stinner766ad362010-05-14 14:36:18 +0000183 Return the :pep:`3147` path to the byte-compiled file associated with the
Barry Warsaw28a691b2010-04-17 00:19:56 +0000184 source *path*. For example, if *path* is ``/foo/bar/baz.py`` the return
185 value would be ``/foo/bar/__pycache__/baz.cpython-32.pyc`` for Python 3.2.
186 The ``cpython-32`` string comes from the current magic tag (see
Brett Cannon19a2f592012-07-09 13:58:07 -0400187 :func:`get_tag`; if :attr:`sys.implementation.cache_tag` is not defined then
188 :exc:`NotImplementedError` will be raised). The returned path will end in
189 ``.pyc`` when ``__debug__`` is True or ``.pyo`` for an optimized Python
Barry Warsaw28a691b2010-04-17 00:19:56 +0000190 (i.e. ``__debug__`` is False). By passing in True or False for
191 *debug_override* you can override the system's value for ``__debug__`` for
192 extension selection.
193
194 *path* need not exist.
195
Brett Cannon19a2f592012-07-09 13:58:07 -0400196 .. versionchanged:: 3.3
197 If :attr:`sys.implementation.cache_tag` is ``None``, then
198 :exc:`NotImplementedError` is raised.
199
Benjamin Peterson0f4dd9a2010-09-13 01:31:57 +0000200
Barry Warsaw28a691b2010-04-17 00:19:56 +0000201.. function:: source_from_cache(path)
202
Victor Stinner766ad362010-05-14 14:36:18 +0000203 Given the *path* to a :pep:`3147` file name, return the associated source code
Barry Warsaw28a691b2010-04-17 00:19:56 +0000204 file path. For example, if *path* is
205 ``/foo/bar/__pycache__/baz.cpython-32.pyc`` the returned path would be
206 ``/foo/bar/baz.py``. *path* need not exist, however if it does not conform
Brett Cannon19a2f592012-07-09 13:58:07 -0400207 to :pep:`3147` format, a ``ValueError`` is raised. If
208 :attr:`sys.implementation.cache_tag` is not defined,
209 :exc:`NotImplementedError` is raised.
210
211 .. versionchanged:: 3.3
212 Raise :exc:`NotImplementedError` when
213 :attr:`sys.implementation.cache_tag` is not defined.
Barry Warsaw28a691b2010-04-17 00:19:56 +0000214
Benjamin Peterson0f4dd9a2010-09-13 01:31:57 +0000215
Barry Warsaw28a691b2010-04-17 00:19:56 +0000216.. function:: get_tag()
217
Victor Stinner766ad362010-05-14 14:36:18 +0000218 Return the :pep:`3147` magic tag string matching this version of Python's
Barry Warsaw28a691b2010-04-17 00:19:56 +0000219 magic number, as returned by :func:`get_magic`.
220
Brett Cannon19a2f592012-07-09 13:58:07 -0400221 .. note::
222 You may use :attr:`sys.implementation.cache_tag` directly starting
223 in Python 3.3.
224
Barry Warsaw28a691b2010-04-17 00:19:56 +0000225
Antoine Pitrou6c6d3a22012-05-17 19:00:35 +0200226The following functions help interact with the import system's internal
227locking mechanism. Locking semantics of imports are an implementation
228detail which may vary from release to release. However, Python ensures
229that circular imports work without any deadlocks.
230
Antoine Pitrou6c6d3a22012-05-17 19:00:35 +0200231
232.. function:: lock_held()
233
234 Return ``True`` if the global import lock is currently held, else
235 ``False``. On platforms without threads, always return ``False``.
236
237 On platforms with threads, a thread executing an import first holds a
238 global import lock, then sets up a per-module lock for the rest of the
239 import. This blocks other threads from importing the same module until
240 the original import completes, preventing other threads from seeing
241 incomplete module objects constructed by the original thread. An
242 exception is made for circular imports, which by construction have to
243 expose an incomplete module object at some point.
244
Brett Cannond104eef2012-07-13 11:26:19 -0400245.. versionchanged:: 3.3
246 The locking scheme has changed to per-module locks for
247 the most part. A global import lock is kept for some critical tasks,
248 such as initializing the per-module locks.
249
250
Antoine Pitrou6c6d3a22012-05-17 19:00:35 +0200251.. function:: acquire_lock()
252
253 Acquire the interpreter's global import lock for the current thread.
254 This lock should be used by import hooks to ensure thread-safety when
255 importing modules.
256
257 Once a thread has acquired the import lock, the same thread may acquire it
258 again without blocking; the thread must release it once for each time it has
259 acquired it.
260
261 On platforms without threads, this function does nothing.
262
Brett Cannond104eef2012-07-13 11:26:19 -0400263.. versionchanged:: 3.3
264 The locking scheme has changed to per-module locks for
265 the most part. A global import lock is kept for some critical tasks,
266 such as initializing the per-module locks.
267
Antoine Pitrou6c6d3a22012-05-17 19:00:35 +0200268
269.. function:: release_lock()
270
271 Release the interpreter's global import lock. On platforms without
272 threads, this function does nothing.
273
Brett Cannond104eef2012-07-13 11:26:19 -0400274.. versionchanged:: 3.3
275 The locking scheme has changed to per-module locks for
276 the most part. A global import lock is kept for some critical tasks,
277 such as initializing the per-module locks.
278
Antoine Pitrou6c6d3a22012-05-17 19:00:35 +0200279
Barry Warsaw28a691b2010-04-17 00:19:56 +0000280The following constants with integer values, defined in this module, are used
281to indicate the search result of :func:`find_module`.
Georg Brandl116aa622007-08-15 14:28:22 +0000282
283
284.. data:: PY_SOURCE
285
286 The module was found as a source file.
287
Brett Cannon0c59b032012-05-11 14:27:29 -0400288 .. deprecated:: 3.3
289
Georg Brandl116aa622007-08-15 14:28:22 +0000290
291.. data:: PY_COMPILED
292
293 The module was found as a compiled code object file.
294
Brett Cannon0c59b032012-05-11 14:27:29 -0400295 .. deprecated:: 3.3
296
Georg Brandl116aa622007-08-15 14:28:22 +0000297
298.. data:: C_EXTENSION
299
300 The module was found as dynamically loadable shared library.
301
Brett Cannon0c59b032012-05-11 14:27:29 -0400302 .. deprecated:: 3.3
303
Georg Brandl116aa622007-08-15 14:28:22 +0000304
Georg Brandl116aa622007-08-15 14:28:22 +0000305.. data:: PKG_DIRECTORY
306
307 The module was found as a package directory.
308
Brett Cannon0c59b032012-05-11 14:27:29 -0400309 .. deprecated:: 3.3
310
Georg Brandl116aa622007-08-15 14:28:22 +0000311
312.. data:: C_BUILTIN
313
314 The module was found as a built-in module.
315
Brett Cannon0c59b032012-05-11 14:27:29 -0400316 .. deprecated:: 3.3
317
Georg Brandl116aa622007-08-15 14:28:22 +0000318
319.. data:: PY_FROZEN
320
R David Murray1623aff2012-03-18 20:50:03 -0400321 The module was found as a frozen module.
Georg Brandl116aa622007-08-15 14:28:22 +0000322
Brett Cannon0c59b032012-05-11 14:27:29 -0400323 .. deprecated:: 3.3
324
Georg Brandl116aa622007-08-15 14:28:22 +0000325
326.. class:: NullImporter(path_string)
327
328 The :class:`NullImporter` type is a :pep:`302` import hook that handles
329 non-directory path strings by failing to find any modules. Calling this type
330 with an existing directory or empty string raises :exc:`ImportError`.
331 Otherwise, a :class:`NullImporter` instance is returned.
332
Brett Cannon115309a2013-03-13 10:58:50 -0700333 Instances have only one method:
Georg Brandl116aa622007-08-15 14:28:22 +0000334
335 .. method:: NullImporter.find_module(fullname [, path])
336
337 This method always returns ``None``, indicating that the requested module could
338 not be found.
339
Brett Cannon115309a2013-03-13 10:58:50 -0700340 .. versionchanged:: 3.3
341 ``None`` is inserted into ``sys.path_importer_cache`` instead of an
342 instance of :class:`NullImporter`.
343
Georg Brandl116aa622007-08-15 14:28:22 +0000344
345.. _examples-imp:
346
347Examples
348--------
349
350The following function emulates what was the standard import statement up to
351Python 1.4 (no hierarchical module names). (This *implementation* wouldn't work
352in that version, since :func:`find_module` has been extended and
353:func:`load_module` has been added in 1.4.) ::
354
355 import imp
356 import sys
357
358 def __import__(name, globals=None, locals=None, fromlist=None):
359 # Fast path: see if the module has already been imported.
360 try:
361 return sys.modules[name]
362 except KeyError:
363 pass
364
365 # If any of the following calls raises an exception,
366 # there's a problem we can't handle -- let the caller handle it.
367
368 fp, pathname, description = imp.find_module(name)
369
370 try:
371 return imp.load_module(name, fp, pathname, description)
372 finally:
373 # Since we may exit via an exception, close fp explicitly.
374 if fp:
375 fp.close()