Server : Apache System : Linux server1.cgrithy.com 3.10.0-1160.95.1.el7.x86_64 #1 SMP Mon Jul 24 13:59:37 UTC 2023 x86_64 User : nobody ( 99) PHP Version : 8.1.23 Disable Function : NONE Directory : /usr/share/doc/python-docs-2.7.5/html/library/ |
<!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.3. imputil — Import utilities — Python 2.7.5 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.7.5', COLLAPSE_INDEX: false, FILE_SUFFIX: '.html', HAS_SOURCE: true }; </script> <script type="text/javascript" src="../_static/jquery.js"></script> <script type="text/javascript" src="../_static/underscore.js"></script> <script type="text/javascript" src="../_static/doctools.js"></script> <script type="text/javascript" src="../_static/sidebar.js"></script> <link rel="search" type="application/opensearchdescription+xml" title="Search within Python 2.7.5 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 2.7.5 documentation" href="../index.html" /> <link rel="up" title="30. Importing Modules" href="modules.html" /> <link rel="next" title="30.4. zipimport — Import modules from Zip archives" href="zipimport.html" /> <link rel="prev" title="30.2. importlib – Convenience wrappers for __import__()" href="importlib.html" /> <link rel="shortcut icon" type="image/png" href="../_static/py.png" /> <script type="text/javascript" src="../_static/copybutton.js"></script> </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="../py-modindex.html" title="Python Module Index" >modules</a> |</li> <li class="right" > <a href="zipimport.html" title="30.4. zipimport — Import modules from Zip archives" accesskey="N">next</a> |</li> <li class="right" > <a href="importlib.html" title="30.2. importlib – Convenience wrappers for __import__()" accesskey="P">previous</a> |</li> <li><img src="../_static/py.png" alt="" style="vertical-align: middle; margin-top: -1px"/></li> <li><a href="http://www.python.org/">Python</a> »</li> <li> <a href="../index.html">Python 2.7.5 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"> <span id="imputil-import-utilities"></span><h1>30.3. <a class="reference internal" href="#module-imputil" title="imputil: Manage and augment the import process. (deprecated)"><tt class="xref py py-mod docutils literal"><span class="pre">imputil</span></tt></a> — 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 <a class="reference internal" href="#module-imputil" title="imputil: Manage and augment the import process. (deprecated)"><tt class="xref py py-mod docutils literal"><span class="pre">imputil</span></tt></a> module has been removed in Python 3.</p> <p id="index-0">This module provides a very handy and useful mechanism for custom <a class="reference internal" href="../reference/simple_stmts.html#import"><tt class="xref std std-keyword docutils literal"><span class="pre">import</span></tt></a> hooks. Compared to the older <tt class="xref py py-mod docutils literal"><span class="pre">ihooks</span></tt> module, <a class="reference internal" href="#module-imputil" title="imputil: Manage and augment the import process. (deprecated)"><tt class="xref py py-mod docutils literal"><span class="pre">imputil</span></tt></a> takes a dramatically simpler and more straight-forward approach to custom <a class="reference internal" href="../reference/simple_stmts.html#import"><tt class="xref std std-keyword 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><p>Install this ImportManager into the specified namespace.</p> </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><p>Restore the previous import mechanism.</p> </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><p>Undocumented.</p> </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><p>Import a top-level module.</p> </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="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="docutils literal"><span class="pre">None</span></tt>, or a 3-tuple.</p> <blockquote> <div><ul class="simple"> <li>If the module was not found, then <tt class="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> </div></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 class="reference internal" href="#imputil.Importer" title="imputil.Importer"><tt class="xref py py-class 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><p>Undocumented.</p> </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><p>Undocumented.</p> </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><p>Undocumented.</p> </dd></dl> </dd></dl> <div class="section" id="examples"> <span id="examples-imputil"></span><h2>30.3.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-1">Also see the <tt class="xref py py-mod docutils literal"><span class="pre">importers</span></tt> module (which can be found in <tt class="file 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 internal" href="#">30.3. <tt class="docutils literal"><span class="pre">imputil</span></tt> — Import utilities</a><ul> <li><a class="reference internal" href="#examples">30.3.1. Examples</a></li> </ul> </li> </ul> <h4>Previous topic</h4> <p class="topless"><a href="importlib.html" title="previous chapter">30.2. <tt class="docutils literal"><span class="pre">importlib</span></tt> – Convenience wrappers for <tt class="docutils literal"><span class="pre">__import__()</span></tt></a></p> <h4>Next topic</h4> <p class="topless"><a href="zipimport.html" title="next chapter">30.4. <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" /> <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="../py-modindex.html" title="Python Module Index" >modules</a> |</li> <li class="right" > <a href="zipimport.html" title="30.4. zipimport — Import modules from Zip archives" >next</a> |</li> <li class="right" > <a href="importlib.html" title="30.2. importlib – Convenience wrappers for __import__()" >previous</a> |</li> <li><img src="../_static/py.png" alt="" style="vertical-align: middle; margin-top: -1px"/></li> <li><a href="http://www.python.org/">Python</a> »</li> <li> <a href="../index.html">Python 2.7.5 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-2020, 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 Oct 13, 2020. <a href="../bugs.html">Found a bug</a>? <br /> Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3. </div> </body> </html>