blob: ea56981315ce541d465fb9d1d7e61d58a995a5a2 [file] [log] [blame]
Brett Cannonafccd632009-01-20 02:21:27 +00001: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
13Introduction
14------------
15
16The purpose of the :mod:`importlib` package is two-fold. One is to provide an
17implementation of the :keyword:`import` statement (and thus, by extension, the
18:func:`__import__` function) in Python source code. This provides an
19implementaiton of :keyword:`import` which is portable to any Python
20interpreter. This also provides a reference implementation which is easier to
21read than one in a programming language other than Python.
22
23Two, the components to implement :keyword:`import` can be exposed in this
24package, making it easier for users to create their own custom objects (known
25generically as importers) to participate in the import process. Details on
26providing 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
61Functions
62---------
63
Brett Cannon78246b62009-01-25 04:56:30 +000064.. function:: __import__(name, globals={}, locals={}, fromlist=list(), level=0)
Brett Cannonafccd632009-01-20 02:21:27 +000065
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 Cannon33418c82009-01-22 18:37:20 +000071 Import a module. The *name* argument specifies what module to
Brett Cannonafccd632009-01-20 02:21:27 +000072 import in absolute or relative terms
73 (e.g. either ``pkg.mod`` or ``..mod``). If the name is
Brett Cannon33418c82009-01-22 18:37:20 +000074 specified in relative terms, then the *package* argument must be
Brett Cannonafccd632009-01-20 02:21:27 +000075 specified to the package which is to act as the anchor for resolving the
76 package name (e.g. ``import_module('..mod', 'pkg.subpkg')`` will import
77 ``pkg.mod``). The specified module will be inserted into
78 :data:`sys.modules` and returned.
Brett Cannon78246b62009-01-25 04:56:30 +000079
80
81:mod:`importlib.machinery` -- Importers and path hooks
82------------------------------------------------------
83
84.. module:: importlib.machinery
85 :synopsis: Importers and path hooks
86
87This module contains the various objects that help :keyword:`import`
88find and load modules.
89
90.. class:: BuiltinImporter
91
92 :term:`Importer` for built-in modules. All known built-in modules are
93 listed in :data:`sys.builtin_module_names`.
94
95 Only class methods are defined by this class to alleviate the need for
96 instantiation.
97
98 .. method:: find_module(fullname, path=None)
99
100 Class method that allows this class to be a :term:`finder` for built-in
101 modules.
102
103 .. method:: load_module(fullname)
104
105 Class method that allows this class to be a :term:`loader` for built-in
106 modules.
107
108
109.. class:: FrozenImporter
110
111 :term:`Importer` for frozen modules.
112
113 Only class methods are defined by this class to alleviate the need for
114 instantiation.
115
116 .. method:: find_module(fullname, path=None)
117
118 Class method that allows this class to be a :term:`finder` for frozen
119 modules.
120
121 .. method:: load_module(fullname)
122
123 Class method that allows this class to be a :term:`loader` for frozen
124 modules.