<!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>How to integrate PyTables in your application by using py2exe — PyTables 3.0.0 documentation</title> <link rel="stylesheet" href="../_static/cloud.css" type="text/css" /> <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> <link rel="stylesheet" href="../" type="text/css" /> <script type="text/javascript"> var DOCUMENTATION_OPTIONS = { URL_ROOT: '../', VERSION: '3.0.0', 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/jquery.cookie.js"></script> <script type="text/javascript" src="../_static/toggle_sections.js"></script> <script type="text/javascript" src="../_static/toggle_sidebar.js"></script> <link rel="shortcut icon" href="../_static/favicon.ico"/> <link rel="top" title="PyTables 3.0.0 documentation" href="../index.html" /> <link rel="up" title="PyTables Cookbook" href="index.html" /> <link rel="next" title="Installing PyTables when you’re not root" href="no_root_install.html" /> <link rel="prev" title="Hints for SQL users" href="hints_for_sql_users.html" /> </head> <body> <div class="relbar-top"> <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="../np-modindex.html" title="Python Module Index" >modules</a> </li> <li class="right" > <a href="no_root_install.html" title="Installing PyTables when you’re not root" accesskey="N">next</a> </li> <li class="right" > <a href="hints_for_sql_users.html" title="Hints for SQL users" accesskey="P">previous</a> </li> <li><a href="../index.html">PyTables 3.0.0 documentation</a> »</li> <li><a href="index.html" accesskey="U">PyTables Cookbook</a> »</li> </ul> </div> </div> <div class="document"> <div class="documentwrapper"> <div class="bodywrapper"> <div class="body"> <div class="section" id="how-to-integrate-pytables-in-your-application-by-using-py2exe"> <h1>How to integrate PyTables in your application by using py2exe<a class="headerlink" href="#how-to-integrate-pytables-in-your-application-by-using-py2exe" title="Permalink to this headline">¶</a></h1> <p>This document shortly describes how to build an executable when using PyTables. <a class="reference external" href="http://www.py2exe.org">Py2exe</a> <a class="footnote-reference" href="#id1" id="id2">[1]</a> is a third party product that converts python scripts into standalone windows application/programs. For more information about py2exe please visit <a class="reference external" href="http://www.py2exe.org">http://www.py2exe.org</a>.</p> <p>To be able to use py2exe you have to download and install it. Please follow the instructions at <a class="reference external" href="http://www.py2exe.org">http://www.py2exe.org</a>.</p> <p>Let’s assume that you have written a python script as in the attachment <a class="reference download internal" href="../_downloads/pytables_test.py"><tt class="xref download docutils literal"><span class="pre">py2exe_howto/pytables_test.py</span></tt></a></p> <div class="highlight-python"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41</pre></div></td><td class="code"><div class="highlight"><pre><span class="kn">from</span> <span class="nn">tables</span> <span class="kn">import</span> <span class="o">*</span> <span class="kn">import</span> <span class="nn">numarray</span> <span class="k">class</span> <span class="nc">Particle</span><span class="p">(</span><span class="n">IsDescription</span><span class="p">):</span> <span class="n">name</span> <span class="o">=</span> <span class="n">StringCol</span><span class="p">(</span><span class="mi">16</span><span class="p">)</span> <span class="c"># 16-character String</span> <span class="n">idnumber</span> <span class="o">=</span> <span class="n">Int64Col</span><span class="p">()</span> <span class="c"># Signed 64-bit integer</span> <span class="n">ADCcount</span> <span class="o">=</span> <span class="n">UInt16Col</span><span class="p">()</span> <span class="c"># Unsigned short integer</span> <span class="n">TDCcount</span> <span class="o">=</span> <span class="n">UInt8Col</span><span class="p">()</span> <span class="c"># Unsigned byte</span> <span class="n">grid_i</span> <span class="o">=</span> <span class="n">Int32Col</span><span class="p">()</span> <span class="c"># Integer</span> <span class="n">grid_j</span> <span class="o">=</span> <span class="n">IntCol</span><span class="p">()</span> <span class="c"># Integer (equivalent to Int32Col)</span> <span class="n">pressure</span> <span class="o">=</span> <span class="n">Float32Col</span><span class="p">()</span> <span class="c"># Float (single-precision)</span> <span class="n">energy</span> <span class="o">=</span> <span class="n">FloatCol</span><span class="p">()</span> <span class="c"># Double (double-precision)</span> <span class="n">h5file</span> <span class="o">=</span> <span class="n">openFile</span><span class="p">(</span><span class="s">"tutorial.h5"</span><span class="p">,</span> <span class="n">mode</span><span class="o">=</span><span class="s">"w"</span><span class="p">,</span> <span class="n">title</span><span class="o">=</span><span class="s">"Test file"</span><span class="p">)</span> <span class="n">group</span> <span class="o">=</span> <span class="n">h5file</span><span class="o">.</span><span class="n">createGroup</span><span class="p">(</span><span class="s">"/"</span><span class="p">,</span> <span class="s">"detector"</span><span class="p">,</span> <span class="s">"Detector information"</span><span class="p">)</span> <span class="n">table</span> <span class="o">=</span> <span class="n">h5file</span><span class="o">.</span><span class="n">createTable</span><span class="p">(</span><span class="n">group</span><span class="p">,</span> <span class="s">"readout"</span><span class="p">,</span> <span class="n">Particle</span><span class="p">,</span> <span class="s">"Readout example"</span><span class="p">)</span> <span class="k">print</span> <span class="n">h5file</span> <span class="n">particle</span> <span class="o">=</span> <span class="n">table</span><span class="o">.</span><span class="n">row</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">xrange</span><span class="p">(</span><span class="mi">10</span><span class="p">):</span> <span class="n">particle</span><span class="p">[</span><span class="s">'name'</span><span class="p">]</span> <span class="o">=</span> <span class="s">'Particle: </span><span class="si">%6d</span><span class="s">'</span> <span class="o">%</span> <span class="n">i</span> <span class="n">particle</span><span class="p">[</span><span class="s">'TDCcount'</span><span class="p">]</span> <span class="o">=</span> <span class="n">i</span> <span class="o">%</span> <span class="mi">256</span> <span class="n">particle</span><span class="p">[</span><span class="s">'ADCcount'</span><span class="p">]</span> <span class="o">=</span> <span class="p">(</span><span class="n">i</span><span class="o">*</span><span class="mi">256</span><span class="p">)</span> <span class="o">%</span> <span class="p">(</span><span class="mi">1</span><span class="o"><<</span><span class="mi">16</span><span class="p">)</span> <span class="n">particle</span><span class="p">[</span><span class="s">'grid_i'</span><span class="p">]</span> <span class="o">=</span> <span class="n">i</span> <span class="n">particle</span><span class="p">[</span><span class="s">'grid_j'</span><span class="p">]</span> <span class="o">=</span> <span class="mi">10</span> <span class="o">-</span> <span class="n">i</span> <span class="n">particle</span><span class="p">[</span><span class="s">'pressure'</span><span class="p">]</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">i</span><span class="o">*</span><span class="n">i</span><span class="p">)</span> <span class="n">particle</span><span class="p">[</span><span class="s">'energy'</span><span class="p">]</span> <span class="o">=</span> <span class="nb">float</span><span class="p">(</span><span class="n">particle</span><span class="p">[</span><span class="s">'pressure'</span><span class="p">]</span><span class="o">**</span><span class="mi">4</span><span class="p">)</span> <span class="n">particle</span><span class="p">[</span><span class="s">'idnumber'</span><span class="p">]</span> <span class="o">=</span> <span class="n">i</span> <span class="o">*</span> <span class="p">(</span><span class="mi">2</span><span class="o">**</span><span class="mi">34</span><span class="p">)</span> <span class="n">particle</span><span class="o">.</span><span class="n">append</span><span class="p">()</span> <span class="n">table</span><span class="o">.</span><span class="n">flush</span><span class="p">()</span> <span class="n">table</span> <span class="o">=</span> <span class="n">h5file</span><span class="o">.</span><span class="n">root</span><span class="o">.</span><span class="n">detector</span><span class="o">.</span><span class="n">readout</span> <span class="n">pressure</span> <span class="o">=</span> <span class="p">[</span><span class="n">x</span><span class="p">[</span><span class="s">'pressure'</span><span class="p">]</span> <span class="k">for</span> <span class="n">x</span> <span class="ow">in</span> <span class="n">table</span><span class="o">.</span><span class="n">iterrows</span><span class="p">()</span> <span class="k">if</span> <span class="n">x</span><span class="p">[</span><span class="s">'TDCcount'</span><span class="p">]</span><span class="o">></span><span class="mi">3</span> <span class="ow">and</span> <span class="mi">20</span><span class="o"><=</span><span class="n">x</span><span class="p">[</span><span class="s">'pressure'</span><span class="p">]</span><span class="o"><</span><span class="mi">50</span><span class="p">]</span> <span class="k">print</span> <span class="n">pressure</span> <span class="n">h5file</span><span class="o">.</span><span class="n">close</span><span class="p">()</span> </pre></div> </td></tr></table></div> <p>To wrap this script into an executable you have to create a setup script and a configuration script in your program directory.</p> <p>The setup script will look like this:</p> <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> <span class="kn">import</span> <span class="nn">py2exe</span> <span class="n">setup</span><span class="p">(</span><span class="n">console</span><span class="o">=</span><span class="p">[</span><span class="s">'pytables_test.py'</span><span class="p">])</span> </pre></div> </div> <p>The configuration script (<tt class="file docutils literal"><span class="pre">setup.cfg</span></tt>) specifies which modules to be included and excluded:</p> <div class="highlight-python"><pre>[py2exe] excludes= Tkconstants,Tkinter,tcl includes= encodings.*, tables.*, numarray.*</pre> </div> <p>As you can see I have included everything from tables (tables.*) and numarray (numarray.*).</p> <p>Now you are ready to build the executable file (<tt class="file docutils literal"><span class="pre">pytable_test.exe</span></tt>). During the build process a subfolder called <em>dist</em> will be created. This folder contains everything needed for your program. All dependencies (dll’s and such stuff) will be copied into this folder. When you distribute your application you have to distribute all files and folders inside the <em>dist</em> folder.</p> <p>Below you can see how to start the build process (<cite>python setup.py py2exe</cite>):</p> <div class="highlight-python"><pre>c:pytables_test> python setup.py py2exe ... BUILDING EXECUTABLE ...</pre> </div> <p>After the build process I enter the <em>dist</em> folder and start <tt class="file docutils literal"><span class="pre">pytables_test.exe</span></tt>.</p> <div class="highlight-python"><pre>c:pytables_test> cd dist c:pytables_testdist> pytables_test.exe tutorial.h5 (File) 'Test file' Last modif.: 'Tue Apr 04 23:09:17 2006' Object Tree: / (RootGroup) 'Test file' /detector (Group) 'Detector information' /detector/readout (Table(0,)) 'Readout example' [25.0, 36.0, 49.0]</pre> </div> <p>DONE!</p> <hr class="docutils" /> <table class="docutils footnote" frame="void" id="id1" rules="none"> <colgroup><col class="label" /><col /></colgroup> <tbody valign="top"> <tr><td class="label"><a class="fn-backref" href="#id2">[1]</a></td><td><a class="reference external" href="http://www.py2exe.org">http://www.py2exe.org</a></td></tr> </tbody> </table> </div> </div> </div> </div> <div class="sphinxsidebar"> <div class="sphinxsidebarwrapper"> <p class="logo"><a href="../index.html"> <img class="logo" src="../_static/logo-pytables-small.png" alt="Logo"/> </a></p> <h4>Previous topic</h4> <p class="topless"><a href="hints_for_sql_users.html" title="previous chapter">Hints for SQL users</a></p> <h4>Next topic</h4> <p class="topless"><a href="no_root_install.html" title="next chapter">Installing PyTables when you’re not root</a></p> <h3>This Page</h3> <ul class="this-page-menu"> <li><a href="../_sources/cookbook/py2exe_howto.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="relbar-bottom"> <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="../np-modindex.html" title="Python Module Index" >modules</a> </li> <li class="right" > <a href="no_root_install.html" title="Installing PyTables when you’re not root" >next</a> </li> <li class="right" > <a href="hints_for_sql_users.html" title="Hints for SQL users" >previous</a> </li> <li><a href="../index.html">PyTables 3.0.0 documentation</a> »</li> <li><a href="index.html" >PyTables Cookbook</a> »</li> </ul> </div> </div> <div class="footer"> © Copyright 2011-2013, PyTables maintainers. Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3. </div> <!-- cloud_sptheme 1.3 --> </body> </html>