Brett Cannon | afccd63 | 2009-01-20 02:21:27 +0000 | [diff] [blame] | 1 | :mod:`importlib` -- An implementation of :keyword:`import` |
| 2 | ========================================================== |
| 3 | |
| 4 | .. module:: importlib |
| 5 | :synopsis: An implementation of the import machinery. |
| 6 | |
| 7 | .. moduleauthor:: Brett Cannon <brett@python.org> |
| 8 | .. sectionauthor:: Brett Cannon <brett@python.org> |
| 9 | |
| 10 | .. versionadded:: 3.1 |
| 11 | |
| 12 | |
| 13 | Introduction |
| 14 | ------------ |
| 15 | |
| 16 | The purpose of the :mod:`importlib` package is two-fold. One is to provide an |
| 17 | implementation of the :keyword:`import` statement (and thus, by extension, the |
| 18 | :func:`__import__` function) in Python source code. This provides an |
| 19 | implementaiton of :keyword:`import` which is portable to any Python |
| 20 | interpreter. This also provides a reference implementation which is easier to |
| 21 | read than one in a programming language other than Python. |
| 22 | |
| 23 | Two, the components to implement :keyword:`import` can be exposed in this |
| 24 | package, making it easier for users to create their own custom objects (known |
| 25 | generically as importers) to participate in the import process. Details on |
| 26 | providing custom importers can be found in :pep:`302`. |
| 27 | |
| 28 | .. seealso:: |
| 29 | |
| 30 | :ref:`import` |
| 31 | The language reference for the :keyword:`import` statement. |
| 32 | |
| 33 | `Packages specification <http://www.python.org/doc/essays/packages.html>`__ |
| 34 | Original specification of packages. Some semantics have changed since |
| 35 | the writing of this document (e.g. redirecting based on :keyword:`None` |
| 36 | in :data:`sys.modules`). |
| 37 | |
| 38 | The :func:`.__import__` function |
| 39 | The built-in function for which the :keyword:`import` statement is |
| 40 | syntactic sugar for. |
| 41 | |
| 42 | :pep:`235` |
| 43 | Import on Case-Insensitive Platforms |
| 44 | |
| 45 | :pep:`263` |
| 46 | Defining Python Source Code Encodings |
| 47 | |
| 48 | :pep:`302` |
| 49 | New Import Hooks. |
| 50 | |
| 51 | :pep:`328` |
| 52 | Imports: Multi-Line and Absolute/Relative |
| 53 | |
| 54 | :pep:`366` |
| 55 | Main module explicit relative imports |
| 56 | |
| 57 | :pep:`3128` |
| 58 | Using UTF-8 as the Default Source Encoding |
| 59 | |
| 60 | |
| 61 | Functions |
| 62 | --------- |
| 63 | |
Brett Cannon | 78246b6 | 2009-01-25 04:56:30 +0000 | [diff] [blame] | 64 | .. function:: __import__(name, globals={}, locals={}, fromlist=list(), level=0) |
Brett Cannon | afccd63 | 2009-01-20 02:21:27 +0000 | [diff] [blame] | 65 | |
| 66 | An implementation of the built-in :func:`__import__` function. See the |
| 67 | built-in function's documentation for usage instructions. |
| 68 | |
| 69 | .. function:: import_module(name, package=None) |
| 70 | |
Brett Cannon | 33418c8 | 2009-01-22 18:37:20 +0000 | [diff] [blame] | 71 | Import a module. The *name* argument specifies what module to |
Brett Cannon | afccd63 | 2009-01-20 02:21:27 +0000 | [diff] [blame] | 72 | import in absolute or relative terms |
| 73 | (e.g. either ``pkg.mod`` or ``..mod``). If the name is |
Brett Cannon | 33418c8 | 2009-01-22 18:37:20 +0000 | [diff] [blame] | 74 | specified in relative terms, then the *package* argument must be |
Brett Cannon | 2c318a1 | 2009-02-07 01:15:27 +0000 | [diff] [blame] | 75 | set to the package which is to act as the anchor for resolving the |
Brett Cannon | afccd63 | 2009-01-20 02:21:27 +0000 | [diff] [blame] | 76 | package name (e.g. ``import_module('..mod', 'pkg.subpkg')`` will import |
Brett Cannon | 2c318a1 | 2009-02-07 01:15:27 +0000 | [diff] [blame] | 77 | ``pkg.mod``). |
Brett Cannon | 78246b6 | 2009-01-25 04:56:30 +0000 | [diff] [blame] | 78 | |
Brett Cannon | 2c318a1 | 2009-02-07 01:15:27 +0000 | [diff] [blame] | 79 | The :func:`import_module` function acts as a simplifying wrapper around |
| 80 | :func:`__import__`. This means all semantics of the function are derived |
| 81 | from :func:`__import__`, including requiring the package where an import is |
| 82 | occuring from to already be imported (i.e., *package* must already be |
| 83 | imported). |
Brett Cannon | 78246b6 | 2009-01-25 04:56:30 +0000 | [diff] [blame] | 84 | |
| 85 | :mod:`importlib.machinery` -- Importers and path hooks |
| 86 | ------------------------------------------------------ |
| 87 | |
| 88 | .. module:: importlib.machinery |
| 89 | :synopsis: Importers and path hooks |
| 90 | |
| 91 | This module contains the various objects that help :keyword:`import` |
| 92 | find and load modules. |
| 93 | |
| 94 | .. class:: BuiltinImporter |
| 95 | |
| 96 | :term:`Importer` for built-in modules. All known built-in modules are |
| 97 | listed in :data:`sys.builtin_module_names`. |
| 98 | |
| 99 | Only class methods are defined by this class to alleviate the need for |
| 100 | instantiation. |
| 101 | |
Benjamin Peterson | 97d3aa5 | 2009-01-25 19:44:16 +0000 | [diff] [blame] | 102 | .. classmethod:: find_module(fullname, path=None) |
Brett Cannon | 78246b6 | 2009-01-25 04:56:30 +0000 | [diff] [blame] | 103 | |
| 104 | Class method that allows this class to be a :term:`finder` for built-in |
| 105 | modules. |
| 106 | |
Benjamin Peterson | 97d3aa5 | 2009-01-25 19:44:16 +0000 | [diff] [blame] | 107 | .. classmethod:: load_module(fullname) |
Brett Cannon | 78246b6 | 2009-01-25 04:56:30 +0000 | [diff] [blame] | 108 | |
| 109 | Class method that allows this class to be a :term:`loader` for built-in |
| 110 | modules. |
| 111 | |
| 112 | |
| 113 | .. class:: FrozenImporter |
| 114 | |
| 115 | :term:`Importer` for frozen modules. |
| 116 | |
| 117 | Only class methods are defined by this class to alleviate the need for |
| 118 | instantiation. |
| 119 | |
Benjamin Peterson | 97d3aa5 | 2009-01-25 19:44:16 +0000 | [diff] [blame] | 120 | .. classmethod:: find_module(fullname, path=None) |
Brett Cannon | 78246b6 | 2009-01-25 04:56:30 +0000 | [diff] [blame] | 121 | |
| 122 | Class method that allows this class to be a :term:`finder` for frozen |
| 123 | modules. |
| 124 | |
Benjamin Peterson | 97d3aa5 | 2009-01-25 19:44:16 +0000 | [diff] [blame] | 125 | .. classmethod:: load_module(fullname) |
Brett Cannon | 78246b6 | 2009-01-25 04:56:30 +0000 | [diff] [blame] | 126 | |
| 127 | Class method that allows this class to be a :term:`loader` for frozen |
| 128 | modules. |