The imp Module

The imp module contains functions that can be used to implement your own import behavior. Example 13-6 overloads the import statement with a version that logs from where it gets the modules.

Example 13-6. Using the imp Module

File: imp-example-1.py import imp import sys def my_import(name, globals=None, locals=None, fromlist=None): try: module = sys.modules[name] # already imported? except KeyError: file, pathname, description = imp.find_module(name) print "import", name, "from", pathname, description module = imp.load_module(name, file, pathname, description) return module import _ _builtin_ _ _ _builtin_ _._ _import_ _ = my_import import xmllib import xmllib from /python/lib/xmllib.py (.py, , 1) import re from /python/lib/re.py (.py, , 1) import sre from /python/lib/sre.py (.py, , 1) import sre_compile from /python/lib/sre_compile.py (.py, , 1) import _sre from /python/_sre.pyd (.pyd, b, 3)

Note that the alternative version shown here doesn support packages. For a more extensive example, see the sources for the knee module.

Категории