blob: 364d81ec13ee53bf608c6fe4ecdc3c2224f7887f [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
Andrew Kuchling1d7d5802013-06-20 21:17:41 -0400161 loaded modules, except for :mod:`sys`, :mod:`__main__` and :mod:`builtins`.
Christian Heimes043d6f62008-01-07 17:19:16 +0000162 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
Brett Cannon6fd25c32013-10-25 13:46:15 -0400175 .. versionchanged:: 3.3
176 Relies on both ``__name__`` and ``__loader__`` being defined on the module
177 being reloaded instead of just ``__name__``.
178
Christian Heimes043d6f62008-01-07 17:19:16 +0000179
Éric Araujo930df312010-12-16 06:28:48 +0000180The following functions are conveniences for handling :pep:`3147` byte-compiled
181file paths.
Barry Warsaw28a691b2010-04-17 00:19:56 +0000182
183.. versionadded:: 3.2
184
185.. function:: cache_from_source(path, debug_override=None)
186
Victor Stinner766ad362010-05-14 14:36:18 +0000187 Return the :pep:`3147` path to the byte-compiled file associated with the
Barry Warsaw28a691b2010-04-17 00:19:56 +0000188 source *path*. For example, if *path* is ``/foo/bar/baz.py`` the return
189 value would be ``/foo/bar/__pycache__/baz.cpython-32.pyc`` for Python 3.2.
190 The ``cpython-32`` string comes from the current magic tag (see
Brett Cannon19a2f592012-07-09 13:58:07 -0400191 :func:`get_tag`; if :attr:`sys.implementation.cache_tag` is not defined then
192 :exc:`NotImplementedError` will be raised). The returned path will end in
Serhiy Storchakafbc1c262013-11-29 12:17:13 +0200193 ``.pyc`` when ``__debug__`` is ``True`` or ``.pyo`` for an optimized Python
194 (i.e. ``__debug__`` is ``False``). By passing in ``True`` or ``False`` for
Barry Warsaw28a691b2010-04-17 00:19:56 +0000195 *debug_override* you can override the system's value for ``__debug__`` for
196 extension selection.
197
198 *path* need not exist.
199
Brett Cannon19a2f592012-07-09 13:58:07 -0400200 .. versionchanged:: 3.3
201 If :attr:`sys.implementation.cache_tag` is ``None``, then
202 :exc:`NotImplementedError` is raised.
203
Benjamin Peterson0f4dd9a2010-09-13 01:31:57 +0000204
Barry Warsaw28a691b2010-04-17 00:19:56 +0000205.. function:: source_from_cache(path)
206
Victor Stinner766ad362010-05-14 14:36:18 +0000207 Given the *path* to a :pep:`3147` file name, return the associated source code
Barry Warsaw28a691b2010-04-17 00:19:56 +0000208 file path. For example, if *path* is
209 ``/foo/bar/__pycache__/baz.cpython-32.pyc`` the returned path would be
210 ``/foo/bar/baz.py``. *path* need not exist, however if it does not conform
Brett Cannon19a2f592012-07-09 13:58:07 -0400211 to :pep:`3147` format, a ``ValueError`` is raised. If
212 :attr:`sys.implementation.cache_tag` is not defined,
213 :exc:`NotImplementedError` is raised.
214
215 .. versionchanged:: 3.3
216 Raise :exc:`NotImplementedError` when
217 :attr:`sys.implementation.cache_tag` is not defined.
Barry Warsaw28a691b2010-04-17 00:19:56 +0000218
Benjamin Peterson0f4dd9a2010-09-13 01:31:57 +0000219
Barry Warsaw28a691b2010-04-17 00:19:56 +0000220.. function:: get_tag()
221
Victor Stinner766ad362010-05-14 14:36:18 +0000222 Return the :pep:`3147` magic tag string matching this version of Python's
Barry Warsaw28a691b2010-04-17 00:19:56 +0000223 magic number, as returned by :func:`get_magic`.
224
Brett Cannon19a2f592012-07-09 13:58:07 -0400225 .. note::
226 You may use :attr:`sys.implementation.cache_tag` directly starting
227 in Python 3.3.
228
Barry Warsaw28a691b2010-04-17 00:19:56 +0000229
Antoine Pitrou6c6d3a22012-05-17 19:00:35 +0200230The following functions help interact with the import system's internal
231locking mechanism. Locking semantics of imports are an implementation
232detail which may vary from release to release. However, Python ensures
233that circular imports work without any deadlocks.
234
Antoine Pitrou6c6d3a22012-05-17 19:00:35 +0200235
236.. function:: lock_held()
237
238 Return ``True`` if the global import lock is currently held, else
239 ``False``. On platforms without threads, always return ``False``.
240
241 On platforms with threads, a thread executing an import first holds a
242 global import lock, then sets up a per-module lock for the rest of the
243 import. This blocks other threads from importing the same module until
244 the original import completes, preventing other threads from seeing
245 incomplete module objects constructed by the original thread. An
246 exception is made for circular imports, which by construction have to
247 expose an incomplete module object at some point.
248
Brett Cannond104eef2012-07-13 11:26:19 -0400249.. versionchanged:: 3.3
250 The locking scheme has changed to per-module locks for
251 the most part. A global import lock is kept for some critical tasks,
252 such as initializing the per-module locks.
253
254
Antoine Pitrou6c6d3a22012-05-17 19:00:35 +0200255.. function:: acquire_lock()
256
257 Acquire the interpreter's global import lock for the current thread.
258 This lock should be used by import hooks to ensure thread-safety when
259 importing modules.
260
261 Once a thread has acquired the import lock, the same thread may acquire it
262 again without blocking; the thread must release it once for each time it has
263 acquired it.
264
265 On platforms without threads, this function does nothing.
266
Brett Cannond104eef2012-07-13 11:26:19 -0400267.. versionchanged:: 3.3
268 The locking scheme has changed to per-module locks for
269 the most part. A global import lock is kept for some critical tasks,
270 such as initializing the per-module locks.
271
Antoine Pitrou6c6d3a22012-05-17 19:00:35 +0200272
273.. function:: release_lock()
274
275 Release the interpreter's global import lock. On platforms without
276 threads, this function does nothing.
277
Brett Cannond104eef2012-07-13 11:26:19 -0400278.. versionchanged:: 3.3
279 The locking scheme has changed to per-module locks for
280 the most part. A global import lock is kept for some critical tasks,
281 such as initializing the per-module locks.
282
Antoine Pitrou6c6d3a22012-05-17 19:00:35 +0200283
Barry Warsaw28a691b2010-04-17 00:19:56 +0000284The following constants with integer values, defined in this module, are used
285to indicate the search result of :func:`find_module`.
Georg Brandl116aa622007-08-15 14:28:22 +0000286
287
288.. data:: PY_SOURCE
289
290 The module was found as a source file.
291
Brett Cannon0c59b032012-05-11 14:27:29 -0400292 .. deprecated:: 3.3
293
Georg Brandl116aa622007-08-15 14:28:22 +0000294
295.. data:: PY_COMPILED
296
297 The module was found as a compiled code object file.
298
Brett Cannon0c59b032012-05-11 14:27:29 -0400299 .. deprecated:: 3.3
300
Georg Brandl116aa622007-08-15 14:28:22 +0000301
302.. data:: C_EXTENSION
303
304 The module was found as dynamically loadable shared library.
305
Brett Cannon0c59b032012-05-11 14:27:29 -0400306 .. deprecated:: 3.3
307
Georg Brandl116aa622007-08-15 14:28:22 +0000308
Georg Brandl116aa622007-08-15 14:28:22 +0000309.. data:: PKG_DIRECTORY
310
311 The module was found as a package directory.
312
Brett Cannon0c59b032012-05-11 14:27:29 -0400313 .. deprecated:: 3.3
314
Georg Brandl116aa622007-08-15 14:28:22 +0000315
316.. data:: C_BUILTIN
317
318 The module was found as a built-in module.
319
Brett Cannon0c59b032012-05-11 14:27:29 -0400320 .. deprecated:: 3.3
321
Georg Brandl116aa622007-08-15 14:28:22 +0000322
323.. data:: PY_FROZEN
324
R David Murray1623aff2012-03-18 20:50:03 -0400325 The module was found as a frozen module.
Georg Brandl116aa622007-08-15 14:28:22 +0000326
Brett Cannon0c59b032012-05-11 14:27:29 -0400327 .. deprecated:: 3.3
328
Georg Brandl116aa622007-08-15 14:28:22 +0000329
330.. class:: NullImporter(path_string)
331
332 The :class:`NullImporter` type is a :pep:`302` import hook that handles
333 non-directory path strings by failing to find any modules. Calling this type
334 with an existing directory or empty string raises :exc:`ImportError`.
335 Otherwise, a :class:`NullImporter` instance is returned.
336
Brett Cannon115309a2013-03-13 10:58:50 -0700337 Instances have only one method:
Georg Brandl116aa622007-08-15 14:28:22 +0000338
339 .. method:: NullImporter.find_module(fullname [, path])
340
341 This method always returns ``None``, indicating that the requested module could
342 not be found.
343
Brett Cannon115309a2013-03-13 10:58:50 -0700344 .. versionchanged:: 3.3
345 ``None`` is inserted into ``sys.path_importer_cache`` instead of an
346 instance of :class:`NullImporter`.
347
Georg Brandl116aa622007-08-15 14:28:22 +0000348
349.. _examples-imp:
350
351Examples
352--------
353
354The following function emulates what was the standard import statement up to
355Python 1.4 (no hierarchical module names). (This *implementation* wouldn't work
356in that version, since :func:`find_module` has been extended and
357:func:`load_module` has been added in 1.4.) ::
358
359 import imp
360 import sys
361
362 def __import__(name, globals=None, locals=None, fromlist=None):
363 # Fast path: see if the module has already been imported.
364 try:
365 return sys.modules[name]
366 except KeyError:
367 pass
368
369 # If any of the following calls raises an exception,
370 # there's a problem we can't handle -- let the caller handle it.
371
372 fp, pathname, description = imp.find_module(name)
373
374 try:
375 return imp.load_module(name, fp, pathname, description)
376 finally:
377 # Since we may exit via an exception, close fp explicitly.
378 if fp:
379 fp.close()