(original) (raw)
changeset: 103318:a547d43c7258 user: Brett Cannon brett@python.org date: Thu Sep 08 10:12:47 2016 -0700 files: Doc/library/importlib.rst description: Issue #27853: Add section headers to the importlib example docs diff -r 9af1e36dda49 -r a547d43c7258 Doc/library/importlib.rst --- a/Doc/library/importlib.rst Thu Sep 08 09:58:47 2016 -0700 +++ b/Doc/library/importlib.rst Thu Sep 08 10:12:47 2016 -0700 @@ -1353,6 +1353,9 @@ Examples -------- +Importing programmatically +'''''''''''''''''''''''''' + To programmatically import a module, use :func:`importlib.import_module`. :: @@ -1360,6 +1363,10 @@ itertools = importlib.import_module('itertools') + +Checking if a module can be imported +'''''''''''''''''''''''''''''''''''' + If you need to find out if a module can be imported without actually doing the import, then you should use :func:`importlib.util.find_spec`. :: @@ -1380,6 +1387,10 @@ # Adding the module to sys.modules is optional. sys.modules[name] = module + +Importing a source file directly +'''''''''''''''''''''''''''''''' + To import a Python source file directly, use the following recipe (Python 3.4 and newer only):: @@ -1398,6 +1409,10 @@ # by name later. sys.modules[module_name] = module + +Setting up an importer +'''''''''''''''''''''' + For deep customizations of import, you typically want to implement an :term:`importer`. This means managing both the :term:`finder` and :term:`loader` side of things. For finders there are two flavours to choose from depending on @@ -1428,6 +1443,10 @@ # of priority. sys.path_hooks.append(SpamPathEntryFinder.path_hook(loader_details)) + +Approximating :func:`importlib.import_module` +''''''''''''''''''''''''''''''''''''''''''''' + Import itself is implemented in Python code, making it possible to expose most of the import machinery through importlib. The following helps illustrate the various APIs that importlib exposes by providing an /brett@python.org