~dkuhlman/python-training-materials/Materials

« back to all changes in this revision

Viewing changes to python-2.7.11-docs-html/distutils/examples.html

  • Committer: Dave Kuhlman
  • Date: 2017-04-15 16:24:56 UTC
  • Revision ID: dkuhlman@davekuhlman.org-20170415162456-iav9vozzg4iwqwv3
Updated docs

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
 
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
 
 
4
 
 
5
 
<html xmlns="http://www.w3.org/1999/xhtml">
6
 
  <head>
7
 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
8
 
    
9
 
    <title>7. Examples &mdash; Python 2.7.11 documentation</title>
10
 
    
11
 
    <link rel="stylesheet" href="../_static/classic.css" type="text/css" />
12
 
    <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
13
 
    
14
 
    <script type="text/javascript">
15
 
      var DOCUMENTATION_OPTIONS = {
16
 
        URL_ROOT:    '../',
17
 
        VERSION:     '2.7.11',
18
 
        COLLAPSE_INDEX: false,
19
 
        FILE_SUFFIX: '.html',
20
 
        HAS_SOURCE:  true
21
 
      };
22
 
    </script>
23
 
    <script type="text/javascript" src="../_static/jquery.js"></script>
24
 
    <script type="text/javascript" src="../_static/underscore.js"></script>
25
 
    <script type="text/javascript" src="../_static/doctools.js"></script>
26
 
    <script type="text/javascript" src="../_static/sidebar.js"></script>
27
 
    <link rel="search" type="application/opensearchdescription+xml"
28
 
          title="Search within Python 2.7.11 documentation"
29
 
          href="../_static/opensearch.xml"/>
30
 
    <link rel="author" title="About these documents" href="../about.html" />
31
 
    <link rel="copyright" title="Copyright" href="../copyright.html" />
32
 
    <link rel="top" title="Python 2.7.11 documentation" href="../contents.html" />
33
 
    <link rel="up" title="Distributing Python Modules" href="index.html" />
34
 
    <link rel="next" title="8. Extending Distutils" href="extending.html" />
35
 
    <link rel="prev" title="6. The Python Package Index (PyPI)" href="packageindex.html" />
36
 
    <link rel="shortcut icon" type="image/png" href="../_static/py.png" />
37
 
    <script type="text/javascript" src="../_static/copybutton.js"></script>
38
 
    <script type="text/javascript" src="../_static/version_switch.js"></script>
39
 
 
40
 
    
41
 
 
42
 
  </head>
43
 
  <body role="document">  
44
 
    <div class="related" role="navigation" aria-label="related navigation">
45
 
      <h3>Navigation</h3>
46
 
      <ul>
47
 
        <li class="right" style="margin-right: 10px">
48
 
          <a href="../genindex.html" title="General Index"
49
 
             accesskey="I">index</a></li>
50
 
        <li class="right" >
51
 
          <a href="../py-modindex.html" title="Python Module Index"
52
 
             >modules</a> |</li>
53
 
        <li class="right" >
54
 
          <a href="extending.html" title="8. Extending Distutils"
55
 
             accesskey="N">next</a> |</li>
56
 
        <li class="right" >
57
 
          <a href="packageindex.html" title="6. The Python Package Index (PyPI)"
58
 
             accesskey="P">previous</a> |</li>
59
 
        <li><img src="../_static/py.png" alt=""
60
 
                 style="vertical-align: middle; margin-top: -1px"/></li>
61
 
        <li><a href="https://www.python.org/">Python</a> &raquo;</li>
62
 
        <li>
63
 
          <span class="version_switcher_placeholder">2.7.11</span>
64
 
          <a href="../index.html">Documentation</a> &raquo;
65
 
        </li>
66
 
 
67
 
          <li class="nav-item nav-item-1"><a href="index.html" accesskey="U">Distributing Python Modules</a> &raquo;</li> 
68
 
      </ul>
69
 
    </div>    
70
 
 
71
 
    <div class="document">
72
 
      <div class="documentwrapper">
73
 
        <div class="bodywrapper">
74
 
          <div class="body" role="main">
75
 
            
76
 
  <div class="section" id="examples">
77
 
<span id="id1"></span><h1>7. Examples<a class="headerlink" href="#examples" title="Permalink to this headline">¶</a></h1>
78
 
<p>This chapter provides a number of basic examples to help get started with
79
 
distutils.  Additional information about using distutils can be found in the
80
 
Distutils Cookbook.</p>
81
 
<div class="admonition seealso">
82
 
<p class="first admonition-title">See also</p>
83
 
<dl class="last docutils">
84
 
<dt><a class="reference external" href="https://wiki.python.org/moin/Distutils/Cookbook">Distutils Cookbook</a></dt>
85
 
<dd>Collection of recipes showing how to achieve more control over distutils.</dd>
86
 
</dl>
87
 
</div>
88
 
<div class="section" id="pure-python-distribution-by-module">
89
 
<span id="pure-mod"></span><h2>7.1. Pure Python distribution (by module)<a class="headerlink" href="#pure-python-distribution-by-module" title="Permalink to this headline">¶</a></h2>
90
 
<p>If you&#8217;re just distributing a couple of modules, especially if they don&#8217;t live
91
 
in a particular package, you can specify them individually using the
92
 
<code class="docutils literal"><span class="pre">py_modules</span></code> option in the setup script.</p>
93
 
<p>In the simplest case, you&#8217;ll have two files to worry about: a setup script and
94
 
the single module you&#8217;re distributing, <code class="file docutils literal"><span class="pre">foo.py</span></code> in this example:</p>
95
 
<div class="highlight-python"><div class="highlight"><pre>&lt;root&gt;/
96
 
        setup.py
97
 
        foo.py
98
 
</pre></div>
99
 
</div>
100
 
<p>(In all diagrams in this section, <em>&lt;root&gt;</em> will refer to the distribution root
101
 
directory.)  A minimal setup script to describe this situation would be:</p>
102
 
<div class="highlight-python"><div class="highlight"><pre><span class="kn">from</span> <span class="nn">distutils.core</span> <span class="kn">import</span> <span class="n">setup</span>
103
 
<span class="n">setup</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="s1">&#39;foo&#39;</span><span class="p">,</span>
104
 
      <span class="n">version</span><span class="o">=</span><span class="s1">&#39;1.0&#39;</span><span class="p">,</span>
105
 
      <span class="n">py_modules</span><span class="o">=</span><span class="p">[</span><span class="s1">&#39;foo&#39;</span><span class="p">],</span>
106
 
      <span class="p">)</span>
107
 
</pre></div>
108
 
</div>
109
 
<p>Note that the name of the distribution is specified independently with the
110
 
<code class="docutils literal"><span class="pre">name</span></code> option, and there&#8217;s no rule that says it has to be the same as
111
 
the name of the sole module in the distribution (although that&#8217;s probably a good
112
 
convention to follow).  However, the distribution name is used to generate
113
 
filenames, so you should stick to letters, digits, underscores, and hyphens.</p>
114
 
<p>Since <code class="docutils literal"><span class="pre">py_modules</span></code> is a list, you can of course specify multiple
115
 
modules, eg. if you&#8217;re distributing modules <code class="xref py py-mod docutils literal"><span class="pre">foo</span></code> and <code class="xref py py-mod docutils literal"><span class="pre">bar</span></code>, your
116
 
setup might look like this:</p>
117
 
<div class="highlight-python"><div class="highlight"><pre>&lt;root&gt;/
118
 
        setup.py
119
 
        foo.py
120
 
        bar.py
121
 
</pre></div>
122
 
</div>
123
 
<p>and the setup script might be</p>
124
 
<div class="highlight-python"><div class="highlight"><pre><span class="kn">from</span> <span class="nn">distutils.core</span> <span class="kn">import</span> <span class="n">setup</span>
125
 
<span class="n">setup</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="s1">&#39;foobar&#39;</span><span class="p">,</span>
126
 
      <span class="n">version</span><span class="o">=</span><span class="s1">&#39;1.0&#39;</span><span class="p">,</span>
127
 
      <span class="n">py_modules</span><span class="o">=</span><span class="p">[</span><span class="s1">&#39;foo&#39;</span><span class="p">,</span> <span class="s1">&#39;bar&#39;</span><span class="p">],</span>
128
 
      <span class="p">)</span>
129
 
</pre></div>
130
 
</div>
131
 
<p>You can put module source files into another directory, but if you have enough
132
 
modules to do that, it&#8217;s probably easier to specify modules by package rather
133
 
than listing them individually.</p>
134
 
</div>
135
 
<div class="section" id="pure-python-distribution-by-package">
136
 
<span id="pure-pkg"></span><h2>7.2. Pure Python distribution (by package)<a class="headerlink" href="#pure-python-distribution-by-package" title="Permalink to this headline">¶</a></h2>
137
 
<p>If you have more than a couple of modules to distribute, especially if they are
138
 
in multiple packages, it&#8217;s probably easier to specify whole packages rather than
139
 
individual modules.  This works even if your modules are not in a package; you
140
 
can just tell the Distutils to process modules from the root package, and that
141
 
works the same as any other package (except that you don&#8217;t have to have an
142
 
<code class="file docutils literal"><span class="pre">__init__.py</span></code> file).</p>
143
 
<p>The setup script from the last example could also be written as</p>
144
 
<div class="highlight-python"><div class="highlight"><pre><span class="kn">from</span> <span class="nn">distutils.core</span> <span class="kn">import</span> <span class="n">setup</span>
145
 
<span class="n">setup</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="s1">&#39;foobar&#39;</span><span class="p">,</span>
146
 
      <span class="n">version</span><span class="o">=</span><span class="s1">&#39;1.0&#39;</span><span class="p">,</span>
147
 
      <span class="n">packages</span><span class="o">=</span><span class="p">[</span><span class="s1">&#39;&#39;</span><span class="p">],</span>
148
 
      <span class="p">)</span>
149
 
</pre></div>
150
 
</div>
151
 
<p>(The empty string stands for the root package.)</p>
152
 
<p>If those two files are moved into a subdirectory, but remain in the root
153
 
package, e.g.:</p>
154
 
<div class="highlight-python"><div class="highlight"><pre>&lt;root&gt;/
155
 
        setup.py
156
 
        src/      foo.py
157
 
                  bar.py
158
 
</pre></div>
159
 
</div>
160
 
<p>then you would still specify the root package, but you have to tell the
161
 
Distutils where source files in the root package live:</p>
162
 
<div class="highlight-python"><div class="highlight"><pre><span class="kn">from</span> <span class="nn">distutils.core</span> <span class="kn">import</span> <span class="n">setup</span>
163
 
<span class="n">setup</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="s1">&#39;foobar&#39;</span><span class="p">,</span>
164
 
      <span class="n">version</span><span class="o">=</span><span class="s1">&#39;1.0&#39;</span><span class="p">,</span>
165
 
      <span class="n">package_dir</span><span class="o">=</span><span class="p">{</span><span class="s1">&#39;&#39;</span><span class="p">:</span> <span class="s1">&#39;src&#39;</span><span class="p">},</span>
166
 
      <span class="n">packages</span><span class="o">=</span><span class="p">[</span><span class="s1">&#39;&#39;</span><span class="p">],</span>
167
 
      <span class="p">)</span>
168
 
</pre></div>
169
 
</div>
170
 
<p>More typically, though, you will want to distribute multiple modules in the same
171
 
package (or in sub-packages).  For example, if the <code class="xref py py-mod docutils literal"><span class="pre">foo</span></code>  and <code class="xref py py-mod docutils literal"><span class="pre">bar</span></code>
172
 
modules belong in package <code class="xref py py-mod docutils literal"><span class="pre">foobar</span></code>, one way to layout your source tree is</p>
173
 
<div class="highlight-python"><div class="highlight"><pre>&lt;root&gt;/
174
 
        setup.py
175
 
        foobar/
176
 
                 __init__.py
177
 
                 foo.py
178
 
                 bar.py
179
 
</pre></div>
180
 
</div>
181
 
<p>This is in fact the default layout expected by the Distutils, and the one that
182
 
requires the least work to describe in your setup script:</p>
183
 
<div class="highlight-python"><div class="highlight"><pre><span class="kn">from</span> <span class="nn">distutils.core</span> <span class="kn">import</span> <span class="n">setup</span>
184
 
<span class="n">setup</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="s1">&#39;foobar&#39;</span><span class="p">,</span>
185
 
      <span class="n">version</span><span class="o">=</span><span class="s1">&#39;1.0&#39;</span><span class="p">,</span>
186
 
      <span class="n">packages</span><span class="o">=</span><span class="p">[</span><span class="s1">&#39;foobar&#39;</span><span class="p">],</span>
187
 
      <span class="p">)</span>
188
 
</pre></div>
189
 
</div>
190
 
<p>If you want to put modules in directories not named for their package, then you
191
 
need to use the <code class="docutils literal"><span class="pre">package_dir</span></code> option again.  For example, if the
192
 
<code class="file docutils literal"><span class="pre">src</span></code> directory holds modules in the <code class="xref py py-mod docutils literal"><span class="pre">foobar</span></code> package:</p>
193
 
<div class="highlight-python"><div class="highlight"><pre>&lt;root&gt;/
194
 
        setup.py
195
 
        src/
196
 
                 __init__.py
197
 
                 foo.py
198
 
                 bar.py
199
 
</pre></div>
200
 
</div>
201
 
<p>an appropriate setup script would be</p>
202
 
<div class="highlight-python"><div class="highlight"><pre><span class="kn">from</span> <span class="nn">distutils.core</span> <span class="kn">import</span> <span class="n">setup</span>
203
 
<span class="n">setup</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="s1">&#39;foobar&#39;</span><span class="p">,</span>
204
 
      <span class="n">version</span><span class="o">=</span><span class="s1">&#39;1.0&#39;</span><span class="p">,</span>
205
 
      <span class="n">package_dir</span><span class="o">=</span><span class="p">{</span><span class="s1">&#39;foobar&#39;</span><span class="p">:</span> <span class="s1">&#39;src&#39;</span><span class="p">},</span>
206
 
      <span class="n">packages</span><span class="o">=</span><span class="p">[</span><span class="s1">&#39;foobar&#39;</span><span class="p">],</span>
207
 
      <span class="p">)</span>
208
 
</pre></div>
209
 
</div>
210
 
<p>Or, you might put modules from your main package right in the distribution
211
 
root:</p>
212
 
<div class="highlight-python"><div class="highlight"><pre>&lt;root&gt;/
213
 
        setup.py
214
 
        __init__.py
215
 
        foo.py
216
 
        bar.py
217
 
</pre></div>
218
 
</div>
219
 
<p>in which case your setup script would be</p>
220
 
<div class="highlight-python"><div class="highlight"><pre><span class="kn">from</span> <span class="nn">distutils.core</span> <span class="kn">import</span> <span class="n">setup</span>
221
 
<span class="n">setup</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="s1">&#39;foobar&#39;</span><span class="p">,</span>
222
 
      <span class="n">version</span><span class="o">=</span><span class="s1">&#39;1.0&#39;</span><span class="p">,</span>
223
 
      <span class="n">package_dir</span><span class="o">=</span><span class="p">{</span><span class="s1">&#39;foobar&#39;</span><span class="p">:</span> <span class="s1">&#39;&#39;</span><span class="p">},</span>
224
 
      <span class="n">packages</span><span class="o">=</span><span class="p">[</span><span class="s1">&#39;foobar&#39;</span><span class="p">],</span>
225
 
      <span class="p">)</span>
226
 
</pre></div>
227
 
</div>
228
 
<p>(The empty string also stands for the current directory.)</p>
229
 
<p>If you have sub-packages, they must be explicitly listed in <code class="docutils literal"><span class="pre">packages</span></code>,
230
 
but any entries in <code class="docutils literal"><span class="pre">package_dir</span></code> automatically extend to sub-packages.
231
 
(In other words, the Distutils does <em>not</em> scan your source tree, trying to
232
 
figure out which directories correspond to Python packages by looking for
233
 
<code class="file docutils literal"><span class="pre">__init__.py</span></code> files.)  Thus, if the default layout grows a sub-package:</p>
234
 
<div class="highlight-python"><div class="highlight"><pre>&lt;root&gt;/
235
 
        setup.py
236
 
        foobar/
237
 
                 __init__.py
238
 
                 foo.py
239
 
                 bar.py
240
 
                 subfoo/
241
 
                           __init__.py
242
 
                           blah.py
243
 
</pre></div>
244
 
</div>
245
 
<p>then the corresponding setup script would be</p>
246
 
<div class="highlight-python"><div class="highlight"><pre><span class="kn">from</span> <span class="nn">distutils.core</span> <span class="kn">import</span> <span class="n">setup</span>
247
 
<span class="n">setup</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="s1">&#39;foobar&#39;</span><span class="p">,</span>
248
 
      <span class="n">version</span><span class="o">=</span><span class="s1">&#39;1.0&#39;</span><span class="p">,</span>
249
 
      <span class="n">packages</span><span class="o">=</span><span class="p">[</span><span class="s1">&#39;foobar&#39;</span><span class="p">,</span> <span class="s1">&#39;foobar.subfoo&#39;</span><span class="p">],</span>
250
 
      <span class="p">)</span>
251
 
</pre></div>
252
 
</div>
253
 
</div>
254
 
<div class="section" id="single-extension-module">
255
 
<span id="single-ext"></span><h2>7.3. Single extension module<a class="headerlink" href="#single-extension-module" title="Permalink to this headline">¶</a></h2>
256
 
<p>Extension modules are specified using the <code class="docutils literal"><span class="pre">ext_modules</span></code> option.
257
 
<code class="docutils literal"><span class="pre">package_dir</span></code> has no effect on where extension source files are found;
258
 
it only affects the source for pure Python modules.  The simplest  case, a
259
 
single extension module in a single C source file, is:</p>
260
 
<div class="highlight-python"><div class="highlight"><pre>&lt;root&gt;/
261
 
        setup.py
262
 
        foo.c
263
 
</pre></div>
264
 
</div>
265
 
<p>If the <code class="xref py py-mod docutils literal"><span class="pre">foo</span></code> extension belongs in the root package, the setup script for
266
 
this could be</p>
267
 
<div class="highlight-python"><div class="highlight"><pre><span class="kn">from</span> <span class="nn">distutils.core</span> <span class="kn">import</span> <span class="n">setup</span>
268
 
<span class="kn">from</span> <span class="nn">distutils.extension</span> <span class="kn">import</span> <span class="n">Extension</span>
269
 
<span class="n">setup</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="s1">&#39;foobar&#39;</span><span class="p">,</span>
270
 
      <span class="n">version</span><span class="o">=</span><span class="s1">&#39;1.0&#39;</span><span class="p">,</span>
271
 
      <span class="n">ext_modules</span><span class="o">=</span><span class="p">[</span><span class="n">Extension</span><span class="p">(</span><span class="s1">&#39;foo&#39;</span><span class="p">,</span> <span class="p">[</span><span class="s1">&#39;foo.c&#39;</span><span class="p">])],</span>
272
 
      <span class="p">)</span>
273
 
</pre></div>
274
 
</div>
275
 
<p>If the extension actually belongs in a package, say <code class="xref py py-mod docutils literal"><span class="pre">foopkg</span></code>, then</p>
276
 
<p>With exactly the same source tree layout, this extension can be put in the
277
 
<code class="xref py py-mod docutils literal"><span class="pre">foopkg</span></code> package simply by changing the name of the extension:</p>
278
 
<div class="highlight-python"><div class="highlight"><pre><span class="kn">from</span> <span class="nn">distutils.core</span> <span class="kn">import</span> <span class="n">setup</span>
279
 
<span class="kn">from</span> <span class="nn">distutils.extension</span> <span class="kn">import</span> <span class="n">Extension</span>
280
 
<span class="n">setup</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="s1">&#39;foobar&#39;</span><span class="p">,</span>
281
 
      <span class="n">version</span><span class="o">=</span><span class="s1">&#39;1.0&#39;</span><span class="p">,</span>
282
 
      <span class="n">ext_modules</span><span class="o">=</span><span class="p">[</span><span class="n">Extension</span><span class="p">(</span><span class="s1">&#39;foopkg.foo&#39;</span><span class="p">,</span> <span class="p">[</span><span class="s1">&#39;foo.c&#39;</span><span class="p">])],</span>
283
 
      <span class="p">)</span>
284
 
</pre></div>
285
 
</div>
286
 
</div>
287
 
</div>
288
 
 
289
 
 
290
 
          </div>
291
 
        </div>
292
 
      </div>
293
 
      <div class="sphinxsidebar" role="navigation" aria-label="main navigation">
294
 
        <div class="sphinxsidebarwrapper">
295
 
  <h3><a href="../contents.html">Table Of Contents</a></h3>
296
 
  <ul>
297
 
<li><a class="reference internal" href="#">7. Examples</a><ul>
298
 
<li><a class="reference internal" href="#pure-python-distribution-by-module">7.1. Pure Python distribution (by module)</a></li>
299
 
<li><a class="reference internal" href="#pure-python-distribution-by-package">7.2. Pure Python distribution (by package)</a></li>
300
 
<li><a class="reference internal" href="#single-extension-module">7.3. Single extension module</a></li>
301
 
</ul>
302
 
</li>
303
 
</ul>
304
 
 
305
 
  <h4>Previous topic</h4>
306
 
  <p class="topless"><a href="packageindex.html"
307
 
                        title="previous chapter">6. The Python Package Index (PyPI)</a></p>
308
 
  <h4>Next topic</h4>
309
 
  <p class="topless"><a href="extending.html"
310
 
                        title="next chapter">8. Extending Distutils</a></p>
311
 
<h3>This Page</h3>
312
 
<ul class="this-page-menu">
313
 
  <li><a href="../bugs.html">Report a Bug</a></li>
314
 
  <li><a href="../_sources/distutils/examples.txt"
315
 
         rel="nofollow">Show Source</a></li>
316
 
</ul>
317
 
 
318
 
<div id="searchbox" style="display: none" role="search">
319
 
  <h3>Quick search</h3>
320
 
    <form class="search" action="../search.html" method="get">
321
 
      <input type="text" name="q" />
322
 
      <input type="submit" value="Go" />
323
 
      <input type="hidden" name="check_keywords" value="yes" />
324
 
      <input type="hidden" name="area" value="default" />
325
 
    </form>
326
 
    <p class="searchtip" style="font-size: 90%">
327
 
    Enter search terms or a module, class or function name.
328
 
    </p>
329
 
</div>
330
 
<script type="text/javascript">$('#searchbox').show(0);</script>
331
 
        </div>
332
 
      </div>
333
 
      <div class="clearer"></div>
334
 
    </div>  
335
 
    <div class="related" role="navigation" aria-label="related navigation">
336
 
      <h3>Navigation</h3>
337
 
      <ul>
338
 
        <li class="right" style="margin-right: 10px">
339
 
          <a href="../genindex.html" title="General Index"
340
 
             >index</a></li>
341
 
        <li class="right" >
342
 
          <a href="../py-modindex.html" title="Python Module Index"
343
 
             >modules</a> |</li>
344
 
        <li class="right" >
345
 
          <a href="extending.html" title="8. Extending Distutils"
346
 
             >next</a> |</li>
347
 
        <li class="right" >
348
 
          <a href="packageindex.html" title="6. The Python Package Index (PyPI)"
349
 
             >previous</a> |</li>
350
 
        <li><img src="../_static/py.png" alt=""
351
 
                 style="vertical-align: middle; margin-top: -1px"/></li>
352
 
        <li><a href="https://www.python.org/">Python</a> &raquo;</li>
353
 
        <li>
354
 
          <span class="version_switcher_placeholder">2.7.11</span>
355
 
          <a href="../index.html">Documentation</a> &raquo;
356
 
        </li>
357
 
 
358
 
          <li class="nav-item nav-item-1"><a href="index.html" >Distributing Python Modules</a> &raquo;</li> 
359
 
      </ul>
360
 
    </div>  
361
 
    <div class="footer">
362
 
    &copy; <a href="../copyright.html">Copyright</a> 1990-2016, Python Software Foundation.
363
 
    <br />
364
 
    The Python Software Foundation is a non-profit corporation.
365
 
    <a href="https://www.python.org/psf/donations/">Please donate.</a>
366
 
    <br />
367
 
    Last updated on Jan 23, 2016.
368
 
    <a href="../bugs.html">Found a bug</a>?
369
 
    <br />
370
 
    Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.3.3.
371
 
    </div>
372
 
 
373
 
  </body>
374
 
</html>
 
 
b'\\ No newline at end of file'