Le seguenti funzioni emulano quello che era la definizione standard di importazione fino a Python 1.4 (senza nomi di moduli gerarchici). (Questa implementazione non potrà lavorare in quella versione, in quanto find_module() è stato esteso e load_module() è stato aggiunto nella 1.4.)
import imp
import sys
def __import__(name, globals=None, locals=None, fromlist=None):
# Percorso veloce: controlla se il modulo è già stato importato.
try:
return sys.modules[name]
except KeyError:
pass
# se una delle seguenti chiamate solleva un'eccezione,
# c'è un problema che non possiamo gestire -- lo gestirà il chiamante.
fp, pathname, description = imp.find_module(name)
try:
return imp.load_module(name, fp, pathname, description)
finally:
# Siccome possiamo uscire tramite
#+ un'eccezione, chiudete fp esplicitamente.
if fp:
fp.close()
Un esempio più completo che implementa gerarchicamente i nomi del modulo e include una funzione reload()può venire trovato nel modulo knee. Il modulo knee può venire trovato in Demo/imputil/ nei sorgenti della distribuzione Python.
Vedete Circa questo documento... per informazioni su modifiche e suggerimenti.