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.
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.
Core Modules
More Standard Modules
Threads and Processes
Data Representation
File Formats
Mail and News Message Processing
Network Protocols
Internationalization
Multimedia Modules
Data Storage
Tools and Utilities
Platform-Specific Modules
Implementation Support Modules
Other Modules