29.1.1 例

次の関数はPython 1.4までの標準import文(階層的なモジュール名がない)をエミュレートします。(この実装はそのバージョンでは動作しないでしょう。なぜなら、find_module()は拡張されており、またload_module()が1.4で追加されているからです。)

import imp
import sys

def __import__(name, globals=None, locals=None, fromlist=None):
    # Fast path: see if the module has already been imported.
    try:
        return sys.modules[name]
    except KeyError:
        pass

    # If any of the following calls raises an exception,
    # there's a problem we can't handle -- let the caller handle it.

    fp, pathname, description = imp.find_module(name)

    try:
        return imp.load_module(name, fp, pathname, description)
    finally:
        # Since we may exit via an exception, close fp explicitly.
        if fp:
            fp.close()

階層的なモジュール名を実装し、reload()関数を含むより完全な例はモジュールkneeにあります。kneeモジュールはPythonのソースディストリビューションの中のDemo/imputil/にあります。

ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。