<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>30.2. imputil — Import utilities — Python v2.6.6 documentation</title>
<link rel="stylesheet" href="../_static/default.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../',
VERSION: '2.6.6',
COLLAPSE_MODINDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
};
</script>
<script type="text/javascript" src="../_static/jquery.js"></script>
<script type="text/javascript" src="../_static/doctools.js"></script>
<link rel="search" type="application/opensearchdescription+xml"
title="Search within Python v2.6.6 documentation"
href="../_static/opensearch.xml"/>
<link rel="author" title="About these documents" href="../about.html" />
<link rel="copyright" title="Copyright" href="../copyright.html" />
<link rel="top" title="Python v2.6.6 documentation" href="../index.html" />
<link rel="up" title="30. Importing Modules" href="modules.html" />
<link rel="next" title="30.3. zipimport — Import modules from Zip archives" href="zipimport.html" />
<link rel="prev" title="30.1. imp — Access the import internals" href="imp.html" />
<link rel="shortcut icon" type="image/png" href="../_static/py.png" />
</head>
<body>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="../modindex.html" title="Global Module Index"
accesskey="M">modules</a> |</li>
<li class="right" >
<a href="zipimport.html" title="30.3. zipimport — Import modules from Zip archives"
accesskey="N">next</a> |</li>
<li class="right" >
<a href="imp.html" title="30.1. imp — Access the import internals"
accesskey="P">previous</a> |</li>
<li><img src="../_static/py.png" alt=""
style="vertical-align: middle; margin-top: -1px"/></li>
<li><a href="../index.html">Python v2.6.6 documentation</a> »</li>
<li><a href="index.html" >The Python Standard Library</a> »</li>
<li><a href="modules.html" accesskey="U">30. Importing Modules</a> »</li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body">
<div class="section" id="module-imputil">
<h1>30.2. <tt class="xref docutils literal"><span class="pre">imputil</span></tt> — Import utilities<a class="headerlink" href="#module-imputil" title="Permalink to this headline">¶</a></h1>
<p class="deprecated">
<span class="versionmodified">Deprecated since version 2.6: </span>The <tt class="xref docutils literal"><span class="pre">imputil</span></tt> module has been removed in Python 3.0.</p>
<p id="index-403">This module provides a very handy and useful mechanism for custom
<a class="reference external" href="../reference/simple_stmts.html#import"><tt class="xref docutils literal"><span class="pre">import</span></tt></a> hooks. Compared to the older <tt class="xref docutils literal"><span class="pre">ihooks</span></tt> module,
<tt class="xref docutils literal"><span class="pre">imputil</span></tt> takes a dramatically simpler and more straight-forward
approach to custom <a class="reference external" href="../reference/simple_stmts.html#import"><tt class="xref docutils literal"><span class="pre">import</span></tt></a> functions.</p>
<dl class="class">
<dt id="imputil.ImportManager">
<em class="property">class </em><tt class="descclassname">imputil.</tt><tt class="descname">ImportManager</tt><big>(</big><span class="optional">[</span><em>fs_imp</em><span class="optional">]</span><big>)</big><a class="headerlink" href="#imputil.ImportManager" title="Permalink to this definition">¶</a></dt>
<dd><p>Manage the import process.</p>
<dl class="method">
<dt id="imputil.ImportManager.install">
<tt class="descname">install</tt><big>(</big><span class="optional">[</span><em>namespace</em><span class="optional">]</span><big>)</big><a class="headerlink" href="#imputil.ImportManager.install" title="Permalink to this definition">¶</a></dt>
<dd>Install this ImportManager into the specified namespace.</dd></dl>
<dl class="method">
<dt id="imputil.ImportManager.uninstall">
<tt class="descname">uninstall</tt><big>(</big><big>)</big><a class="headerlink" href="#imputil.ImportManager.uninstall" title="Permalink to this definition">¶</a></dt>
<dd>Restore the previous import mechanism.</dd></dl>
<dl class="method">
<dt id="imputil.ImportManager.add_suffix">
<tt class="descname">add_suffix</tt><big>(</big><em>suffix</em>, <em>importFunc</em><big>)</big><a class="headerlink" href="#imputil.ImportManager.add_suffix" title="Permalink to this definition">¶</a></dt>
<dd>Undocumented.</dd></dl>
</dd></dl>
<dl class="class">
<dt id="imputil.Importer">
<em class="property">class </em><tt class="descclassname">imputil.</tt><tt class="descname">Importer</tt><a class="headerlink" href="#imputil.Importer" title="Permalink to this definition">¶</a></dt>
<dd><p>Base class for replacing standard import functions.</p>
<dl class="method">
<dt id="imputil.Importer.import_top">
<tt class="descname">import_top</tt><big>(</big><em>name</em><big>)</big><a class="headerlink" href="#imputil.Importer.import_top" title="Permalink to this definition">¶</a></dt>
<dd>Import a top-level module.</dd></dl>
<dl class="method">
<dt id="imputil.Importer.get_code">
<tt class="descname">get_code</tt><big>(</big><em>parent</em>, <em>modname</em>, <em>fqname</em><big>)</big><a class="headerlink" href="#imputil.Importer.get_code" title="Permalink to this definition">¶</a></dt>
<dd><p>Find and retrieve the code for the given module.</p>
<p><em>parent</em> specifies a parent module to define a context for importing.
It may be <tt class="xref docutils literal"><span class="pre">None</span></tt>, indicating no particular context for the search.</p>
<p><em>modname</em> specifies a single module (not dotted) within the parent.</p>
<p><em>fqname</em> specifies the fully-qualified module name. This is a
(potentially) dotted name from the “root” of the module namespace
down to the modname.</p>
<p>If there is no parent, then modname==fqname.</p>
<p>This method should return <tt class="xref docutils literal"><span class="pre">None</span></tt>, or a 3-tuple.</p>
<blockquote>
<ul class="simple">
<li>If the module was not found, then <tt class="xref docutils literal"><span class="pre">None</span></tt> should be returned.</li>
<li>The first item of the 2- or 3-tuple should be the integer 0 or 1,
specifying whether the module that was found is a package or not.</li>
<li>The second item is the code object for the module (it will be
executed within the new module’s namespace). This item can also
be a fully-loaded module object (e.g. loaded from a shared lib).</li>
<li>The third item is a dictionary of name/value pairs that will be
inserted into new module before the code object is executed. This
is provided in case the module’s code expects certain values (such
as where the module was found). When the second item is a module
object, then these names/values will be inserted <em>after</em> the module
has been loaded/initialized.</li>
</ul>
</blockquote>
</dd></dl>
</dd></dl>
<dl class="class">
<dt id="imputil.BuiltinImporter">
<em class="property">class </em><tt class="descclassname">imputil.</tt><tt class="descname">BuiltinImporter</tt><a class="headerlink" href="#imputil.BuiltinImporter" title="Permalink to this definition">¶</a></dt>
<dd><p>Emulate the import mechanism for built-in and frozen modules. This is a
sub-class of the <a title="imputil.Importer" class="reference internal" href="#imputil.Importer"><tt class="xref docutils literal"><span class="pre">Importer</span></tt></a> class.</p>
<dl class="method">
<dt id="imputil.BuiltinImporter.get_code">
<tt class="descname">get_code</tt><big>(</big><em>parent</em>, <em>modname</em>, <em>fqname</em><big>)</big><a class="headerlink" href="#imputil.BuiltinImporter.get_code" title="Permalink to this definition">¶</a></dt>
<dd>Undocumented.</dd></dl>
</dd></dl>
<dl class="function">
<dt id="imputil.py_suffix_importer">
<tt class="descclassname">imputil.</tt><tt class="descname">py_suffix_importer</tt><big>(</big><em>filename</em>, <em>finfo</em>, <em>fqname</em><big>)</big><a class="headerlink" href="#imputil.py_suffix_importer" title="Permalink to this definition">¶</a></dt>
<dd>Undocumented.</dd></dl>
<dl class="class">
<dt id="imputil.DynLoadSuffixImporter">
<em class="property">class </em><tt class="descclassname">imputil.</tt><tt class="descname">DynLoadSuffixImporter</tt><big>(</big><span class="optional">[</span><em>desc</em><span class="optional">]</span><big>)</big><a class="headerlink" href="#imputil.DynLoadSuffixImporter" title="Permalink to this definition">¶</a></dt>
<dd><p>Undocumented.</p>
<dl class="method">
<dt id="imputil.DynLoadSuffixImporter.import_file">
<tt class="descname">import_file</tt><big>(</big><em>filename</em>, <em>finfo</em>, <em>fqname</em><big>)</big><a class="headerlink" href="#imputil.DynLoadSuffixImporter.import_file" title="Permalink to this definition">¶</a></dt>
<dd>Undocumented.</dd></dl>
</dd></dl>
<div class="section" id="examples">
<span id="examples-imputil"></span><h2>30.2.1. Examples<a class="headerlink" href="#examples" title="Permalink to this headline">¶</a></h2>
<p>This is a re-implementation of hierarchical module import.</p>
<p>This code is intended to be read, not executed. However, it does work
– all you need to do to enable it is “import knee”.</p>
<p>(The name is a pun on the clunkier predecessor of this module, “ni”.)</p>
<div class="highlight-python"><div class="highlight"><pre><span class="kn">import</span> <span class="nn">sys</span><span class="o">,</span> <span class="nn">imp</span><span class="o">,</span> <span class="nn">__builtin__</span>
<span class="c"># Replacement for __import__()</span>
<span class="k">def</span> <span class="nf">import_hook</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="nb">globals</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="nb">locals</span><span class="o">=</span><span class="bp">None</span><span class="p">,</span> <span class="n">fromlist</span><span class="o">=</span><span class="bp">None</span><span class="p">):</span>
<span class="n">parent</span> <span class="o">=</span> <span class="n">determine_parent</span><span class="p">(</span><span class="nb">globals</span><span class="p">)</span>
<span class="n">q</span><span class="p">,</span> <span class="n">tail</span> <span class="o">=</span> <span class="n">find_head_package</span><span class="p">(</span><span class="n">parent</span><span class="p">,</span> <span class="n">name</span><span class="p">)</span>
<span class="n">m</span> <span class="o">=</span> <span class="n">load_tail</span><span class="p">(</span><span class="n">q</span><span class="p">,</span> <span class="n">tail</span><span class="p">)</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">fromlist</span><span class="p">:</span>
<span class="k">return</span> <span class="n">q</span>
<span class="k">if</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">m</span><span class="p">,</span> <span class="s">"__path__"</span><span class="p">):</span>
<span class="n">ensure_fromlist</span><span class="p">(</span><span class="n">m</span><span class="p">,</span> <span class="n">fromlist</span><span class="p">)</span>
<span class="k">return</span> <span class="n">m</span>
<span class="k">def</span> <span class="nf">determine_parent</span><span class="p">(</span><span class="nb">globals</span><span class="p">):</span>
<span class="k">if</span> <span class="ow">not</span> <span class="nb">globals</span> <span class="ow">or</span> <span class="ow">not</span> <span class="nb">globals</span><span class="o">.</span><span class="n">has_key</span><span class="p">(</span><span class="s">"__name__"</span><span class="p">):</span>
<span class="k">return</span> <span class="bp">None</span>
<span class="n">pname</span> <span class="o">=</span> <span class="nb">globals</span><span class="p">[</span><span class="s">'__name__'</span><span class="p">]</span>
<span class="k">if</span> <span class="nb">globals</span><span class="o">.</span><span class="n">has_key</span><span class="p">(</span><span class="s">"__path__"</span><span class="p">):</span>
<span class="n">parent</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">modules</span><span class="p">[</span><span class="n">pname</span><span class="p">]</span>
<span class="k">assert</span> <span class="nb">globals</span> <span class="ow">is</span> <span class="n">parent</span><span class="o">.</span><span class="n">__dict__</span>
<span class="k">return</span> <span class="n">parent</span>
<span class="k">if</span> <span class="s">'.'</span> <span class="ow">in</span> <span class="n">pname</span><span class="p">:</span>
<span class="n">i</span> <span class="o">=</span> <span class="n">pname</span><span class="o">.</span><span class="n">rfind</span><span class="p">(</span><span class="s">'.'</span><span class="p">)</span>
<span class="n">pname</span> <span class="o">=</span> <span class="n">pname</span><span class="p">[:</span><span class="n">i</span><span class="p">]</span>
<span class="n">parent</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">modules</span><span class="p">[</span><span class="n">pname</span><span class="p">]</span>
<span class="k">assert</span> <span class="n">parent</span><span class="o">.</span><span class="n">__name__</span> <span class="o">==</span> <span class="n">pname</span>
<span class="k">return</span> <span class="n">parent</span>
<span class="k">return</span> <span class="bp">None</span>
<span class="k">def</span> <span class="nf">find_head_package</span><span class="p">(</span><span class="n">parent</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
<span class="k">if</span> <span class="s">'.'</span> <span class="ow">in</span> <span class="n">name</span><span class="p">:</span>
<span class="n">i</span> <span class="o">=</span> <span class="n">name</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s">'.'</span><span class="p">)</span>
<span class="n">head</span> <span class="o">=</span> <span class="n">name</span><span class="p">[:</span><span class="n">i</span><span class="p">]</span>
<span class="n">tail</span> <span class="o">=</span> <span class="n">name</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">:]</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">head</span> <span class="o">=</span> <span class="n">name</span>
<span class="n">tail</span> <span class="o">=</span> <span class="s">""</span>
<span class="k">if</span> <span class="n">parent</span><span class="p">:</span>
<span class="n">qname</span> <span class="o">=</span> <span class="s">"</span><span class="si">%s</span><span class="s">.</span><span class="si">%s</span><span class="s">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">parent</span><span class="o">.</span><span class="n">__name__</span><span class="p">,</span> <span class="n">head</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">qname</span> <span class="o">=</span> <span class="n">head</span>
<span class="n">q</span> <span class="o">=</span> <span class="n">import_module</span><span class="p">(</span><span class="n">head</span><span class="p">,</span> <span class="n">qname</span><span class="p">,</span> <span class="n">parent</span><span class="p">)</span>
<span class="k">if</span> <span class="n">q</span><span class="p">:</span> <span class="k">return</span> <span class="n">q</span><span class="p">,</span> <span class="n">tail</span>
<span class="k">if</span> <span class="n">parent</span><span class="p">:</span>
<span class="n">qname</span> <span class="o">=</span> <span class="n">head</span>
<span class="n">parent</span> <span class="o">=</span> <span class="bp">None</span>
<span class="n">q</span> <span class="o">=</span> <span class="n">import_module</span><span class="p">(</span><span class="n">head</span><span class="p">,</span> <span class="n">qname</span><span class="p">,</span> <span class="n">parent</span><span class="p">)</span>
<span class="k">if</span> <span class="n">q</span><span class="p">:</span> <span class="k">return</span> <span class="n">q</span><span class="p">,</span> <span class="n">tail</span>
<span class="k">raise</span> <span class="ne">ImportError</span><span class="p">(</span><span class="s">"No module named "</span> <span class="o">+</span> <span class="n">qname</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">load_tail</span><span class="p">(</span><span class="n">q</span><span class="p">,</span> <span class="n">tail</span><span class="p">):</span>
<span class="n">m</span> <span class="o">=</span> <span class="n">q</span>
<span class="k">while</span> <span class="n">tail</span><span class="p">:</span>
<span class="n">i</span> <span class="o">=</span> <span class="n">tail</span><span class="o">.</span><span class="n">find</span><span class="p">(</span><span class="s">'.'</span><span class="p">)</span>
<span class="k">if</span> <span class="n">i</span> <span class="o"><</span> <span class="mi">0</span><span class="p">:</span> <span class="n">i</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">tail</span><span class="p">)</span>
<span class="n">head</span><span class="p">,</span> <span class="n">tail</span> <span class="o">=</span> <span class="n">tail</span><span class="p">[:</span><span class="n">i</span><span class="p">],</span> <span class="n">tail</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">:]</span>
<span class="n">mname</span> <span class="o">=</span> <span class="s">"</span><span class="si">%s</span><span class="s">.</span><span class="si">%s</span><span class="s">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">m</span><span class="o">.</span><span class="n">__name__</span><span class="p">,</span> <span class="n">head</span><span class="p">)</span>
<span class="n">m</span> <span class="o">=</span> <span class="n">import_module</span><span class="p">(</span><span class="n">head</span><span class="p">,</span> <span class="n">mname</span><span class="p">,</span> <span class="n">m</span><span class="p">)</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">m</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">ImportError</span><span class="p">(</span><span class="s">"No module named "</span> <span class="o">+</span> <span class="n">mname</span><span class="p">)</span>
<span class="k">return</span> <span class="n">m</span>
<span class="k">def</span> <span class="nf">ensure_fromlist</span><span class="p">(</span><span class="n">m</span><span class="p">,</span> <span class="n">fromlist</span><span class="p">,</span> <span class="n">recursive</span><span class="o">=</span><span class="mi">0</span><span class="p">):</span>
<span class="k">for</span> <span class="n">sub</span> <span class="ow">in</span> <span class="n">fromlist</span><span class="p">:</span>
<span class="k">if</span> <span class="n">sub</span> <span class="o">==</span> <span class="s">"*"</span><span class="p">:</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">recursive</span><span class="p">:</span>
<span class="k">try</span><span class="p">:</span>
<span class="nb">all</span> <span class="o">=</span> <span class="n">m</span><span class="o">.</span><span class="n">__all__</span>
<span class="k">except</span> <span class="ne">AttributeError</span><span class="p">:</span>
<span class="k">pass</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">ensure_fromlist</span><span class="p">(</span><span class="n">m</span><span class="p">,</span> <span class="nb">all</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
<span class="k">continue</span>
<span class="k">if</span> <span class="n">sub</span> <span class="o">!=</span> <span class="s">"*"</span> <span class="ow">and</span> <span class="ow">not</span> <span class="nb">hasattr</span><span class="p">(</span><span class="n">m</span><span class="p">,</span> <span class="n">sub</span><span class="p">):</span>
<span class="n">subname</span> <span class="o">=</span> <span class="s">"</span><span class="si">%s</span><span class="s">.</span><span class="si">%s</span><span class="s">"</span> <span class="o">%</span> <span class="p">(</span><span class="n">m</span><span class="o">.</span><span class="n">__name__</span><span class="p">,</span> <span class="n">sub</span><span class="p">)</span>
<span class="n">submod</span> <span class="o">=</span> <span class="n">import_module</span><span class="p">(</span><span class="n">sub</span><span class="p">,</span> <span class="n">subname</span><span class="p">,</span> <span class="n">m</span><span class="p">)</span>
<span class="k">if</span> <span class="ow">not</span> <span class="n">submod</span><span class="p">:</span>
<span class="k">raise</span> <span class="ne">ImportError</span><span class="p">(</span><span class="s">"No module named "</span> <span class="o">+</span> <span class="n">subname</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">import_module</span><span class="p">(</span><span class="n">partname</span><span class="p">,</span> <span class="n">fqname</span><span class="p">,</span> <span class="n">parent</span><span class="p">):</span>
<span class="k">try</span><span class="p">:</span>
<span class="k">return</span> <span class="n">sys</span><span class="o">.</span><span class="n">modules</span><span class="p">[</span><span class="n">fqname</span><span class="p">]</span>
<span class="k">except</span> <span class="ne">KeyError</span><span class="p">:</span>
<span class="k">pass</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">fp</span><span class="p">,</span> <span class="n">pathname</span><span class="p">,</span> <span class="n">stuff</span> <span class="o">=</span> <span class="n">imp</span><span class="o">.</span><span class="n">find_module</span><span class="p">(</span><span class="n">partname</span><span class="p">,</span>
<span class="n">parent</span> <span class="ow">and</span> <span class="n">parent</span><span class="o">.</span><span class="n">__path__</span><span class="p">)</span>
<span class="k">except</span> <span class="ne">ImportError</span><span class="p">:</span>
<span class="k">return</span> <span class="bp">None</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">m</span> <span class="o">=</span> <span class="n">imp</span><span class="o">.</span><span class="n">load_module</span><span class="p">(</span><span class="n">fqname</span><span class="p">,</span> <span class="n">fp</span><span class="p">,</span> <span class="n">pathname</span><span class="p">,</span> <span class="n">stuff</span><span class="p">)</span>
<span class="k">finally</span><span class="p">:</span>
<span class="k">if</span> <span class="n">fp</span><span class="p">:</span> <span class="n">fp</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
<span class="k">if</span> <span class="n">parent</span><span class="p">:</span>
<span class="nb">setattr</span><span class="p">(</span><span class="n">parent</span><span class="p">,</span> <span class="n">partname</span><span class="p">,</span> <span class="n">m</span><span class="p">)</span>
<span class="k">return</span> <span class="n">m</span>
<span class="c"># Replacement for reload()</span>
<span class="k">def</span> <span class="nf">reload_hook</span><span class="p">(</span><span class="n">module</span><span class="p">):</span>
<span class="n">name</span> <span class="o">=</span> <span class="n">module</span><span class="o">.</span><span class="n">__name__</span>
<span class="k">if</span> <span class="s">'.'</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">name</span><span class="p">:</span>
<span class="k">return</span> <span class="n">import_module</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="bp">None</span><span class="p">)</span>
<span class="n">i</span> <span class="o">=</span> <span class="n">name</span><span class="o">.</span><span class="n">rfind</span><span class="p">(</span><span class="s">'.'</span><span class="p">)</span>
<span class="n">pname</span> <span class="o">=</span> <span class="n">name</span><span class="p">[:</span><span class="n">i</span><span class="p">]</span>
<span class="n">parent</span> <span class="o">=</span> <span class="n">sys</span><span class="o">.</span><span class="n">modules</span><span class="p">[</span><span class="n">pname</span><span class="p">]</span>
<span class="k">return</span> <span class="n">import_module</span><span class="p">(</span><span class="n">name</span><span class="p">[</span><span class="n">i</span><span class="o">+</span><span class="mi">1</span><span class="p">:],</span> <span class="n">name</span><span class="p">,</span> <span class="n">parent</span><span class="p">)</span>
<span class="c"># Save the original hooks</span>
<span class="n">original_import</span> <span class="o">=</span> <span class="n">__builtin__</span><span class="o">.</span><span class="n">__import__</span>
<span class="n">original_reload</span> <span class="o">=</span> <span class="n">__builtin__</span><span class="o">.</span><span class="n">reload</span>
<span class="c"># Now install our hooks</span>
<span class="n">__builtin__</span><span class="o">.</span><span class="n">__import__</span> <span class="o">=</span> <span class="n">import_hook</span>
<span class="n">__builtin__</span><span class="o">.</span><span class="n">reload</span> <span class="o">=</span> <span class="n">reload_hook</span>
</pre></div>
</div>
<p id="index-404">Also see the <tt class="xref docutils literal"><span class="pre">importers</span></tt> module (which can be found
in <tt class="docutils literal"><span class="pre">Demo/imputil/</span></tt> in the Python source distribution) for additional
examples.</p>
</div>
</div>
</div>
</div>
</div>
<div class="sphinxsidebar">
<div class="sphinxsidebarwrapper">
<h3><a href="../contents.html">Table Of Contents</a></h3>
<ul>
<li><a class="reference external" href="#">30.2. <tt class="docutils literal"><span class="pre">imputil</span></tt> — Import utilities</a><ul>
<li><a class="reference external" href="#examples">30.2.1. Examples</a></li>
</ul>
</li>
</ul>
<h4>Previous topic</h4>
<p class="topless"><a href="imp.html"
title="previous chapter">30.1. <tt class="docutils literal docutils literal"><span class="pre">imp</span></tt> — Access the <tt class="docutils literal docutils literal"><span class="pre">import</span></tt> internals</a></p>
<h4>Next topic</h4>
<p class="topless"><a href="zipimport.html"
title="next chapter">30.3. <tt class="docutils literal"><span class="pre">zipimport</span></tt> — Import modules from Zip archives</a></p>
<h3>This Page</h3>
<ul class="this-page-menu">
<li><a href="../bugs.html">Report a Bug</a></li>
<li><a href="../_sources/library/imputil.txt"
rel="nofollow">Show Source</a></li>
</ul>
<div id="searchbox" style="display: none">
<h3>Quick search</h3>
<form class="search" action="../search.html" method="get">
<input type="text" name="q" size="18" />
<input type="submit" value="Go" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
<p class="searchtip" style="font-size: 90%">
Enter search terms or a module, class or function name.
</p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="../modindex.html" title="Global Module Index"
>modules</a> |</li>
<li class="right" >
<a href="zipimport.html" title="30.3. zipimport — Import modules from Zip archives"
>next</a> |</li>
<li class="right" >
<a href="imp.html" title="30.1. imp — Access the import internals"
>previous</a> |</li>
<li><img src="../_static/py.png" alt=""
style="vertical-align: middle; margin-top: -1px"/></li>
<li><a href="../index.html">Python v2.6.6 documentation</a> »</li>
<li><a href="index.html" >The Python Standard Library</a> »</li>
<li><a href="modules.html" >30. Importing Modules</a> »</li>
</ul>
</div>
<div class="footer">
© <a href="../copyright.html">Copyright</a> 1990-2011, Python Software Foundation.
<br />
The Python Software Foundation is a non-profit corporation.
<a href="http://www.python.org/psf/donations/">Please donate.</a>
<br />
Last updated on Jul 20, 2011.
<a href="../bugs.html">Found a bug</a>?
<br />
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.6.
</div>
</body>
</html>
Copyright 2K16 - 2K18 Indonesian Hacker Rulez