Changeset 258
- Timestamp:
- Wed Feb 8 08:02:37 2006
- Files:
-
- trunk/doc/Manual.html (modified) (diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
trunk/doc/Manual.html
r164 r258 22 22 <td><a class="first last reference" href="mailto:william@hpcf.upr.edu">william@hpcf.upr.edu</a></td></tr> 23 23 <tr><th class="docinfo-name">Revision:</th> 24 <td> 116</td></tr>24 <td>257</td></tr> 24 24 <tr class="field"><th class="docinfo-name">Source URL:</th><td class="field-body">svn://pyinstaller/trunk/doc/source/Manual.rst</td> 25 25 </tr> … … 42 42 <li><a class="reference" href="#a-note-on-using-upx" id="id10" name="id10">A Note on using UPX</a></li> 43 43 <li><a class="reference" href="#a-note-on-onefile" id="id11" name="id11">A Note on <tt class="docutils literal"><span class="pre">--onefile</span></tt></a></li> 44 <li><a class="reference" href="#a-note-on-egg-files-and-setuptools" id="id12" name="id12">A Note on .egg files and setuptools</a></li> 44 45 </ul> 45 46 </li> 46 <li><a class="reference" href="#pyinstaller-utilities" id="id12" name="id12">PyInstaller Utilities</a><ul> 47 <li><a class="reference" href="#archiveviewer" id="id13" name="id13">ArchiveViewer</a></li> 48 <li><a class="reference" href="#bindepend" id="id14" name="id14">bindepend</a></li> 49 <li><a class="reference" href="#grabversion-windows" id="id15" name="id15">GrabVersion (Windows)</a></li> 50 <li><a class="reference" href="#analyzing-dependencies" id="id16" name="id16">Analyzing Dependencies</a></li> 47 <li><a class="reference" href="#pyinstaller-utilities" id="id13" name="id13">PyInstaller Utilities</a><ul> 48 <li><a class="reference" href="#archiveviewer" id="id14" name="id14">ArchiveViewer</a></li> 49 <li><a class="reference" href="#bindepend" id="id15" name="id15">bindepend</a></li> 50 <li><a class="reference" href="#grabversion-windows" id="id16" name="id16">GrabVersion (Windows)</a></li> 51 <li><a class="reference" href="#analyzing-dependencies" id="id17" name="id17">Analyzing Dependencies</a></li> 51 52 </ul> 52 53 </li> 53 <li><a class="reference" href="#spec-files" id="id17" name="id17">Spec Files</a><ul> 54 <li><a class="reference" href="#introduction" id="id18" name="id18">Introduction</a></li> 55 <li><a class="reference" href="#toc-class-table-of-contents" id="id19" name="id19">TOC Class (Table of Contents)</a></li> 56 <li><a class="reference" href="#target-subclasses" id="id20" name="id20">Target Subclasses</a><ul> 57 <li><a class="reference" href="#analysis" id="id21" name="id21">Analysis</a></li> 58 <li><a class="reference" href="#pyz" id="id22" name="id22">PYZ</a></li> 59 <li><a class="reference" href="#pkg" id="id23" name="id23">PKG</a></li> 60 <li><a class="reference" href="#exe" id="id24" name="id24">EXE</a></li> 61 <li><a class="reference" href="#dll" id="id25" name="id25">DLL</a></li> 62 <li><a class="reference" href="#collect" id="id26" name="id26">COLLECT</a></li> 63 <li><a class="reference" href="#tree" id="id27" name="id27">Tree</a></li> 54 <li><a class="reference" href="#spec-files" id="id18" name="id18">Spec Files</a><ul> 55 <li><a class="reference" href="#introduction" id="id19" name="id19">Introduction</a></li> 56 <li><a class="reference" href="#toc-class-table-of-contents" id="id20" name="id20">TOC Class (Table of Contents)</a></li> 57 <li><a class="reference" href="#target-subclasses" id="id21" name="id21">Target Subclasses</a><ul> 58 <li><a class="reference" href="#analysis" id="id22" name="id22">Analysis</a></li> 59 <li><a class="reference" href="#pyz" id="id23" name="id23">PYZ</a></li> 60 <li><a class="reference" href="#pkg" id="id24" name="id24">PKG</a></li> 61 <li><a class="reference" href="#exe" id="id25" name="id25">EXE</a></li> 62 <li><a class="reference" href="#dll" id="id26" name="id26">DLL</a></li> 63 <li><a class="reference" href="#collect" id="id27" name="id27">COLLECT</a></li> 64 <li><a class="reference" href="#tree" id="id28" name="id28">Tree</a></li> 64 65 </ul> 65 66 </li> 66 67 </ul> 67 68 </li> 68 <li><a class="reference" href="#when-things-go-wrong" id="id28" name="id28">When Things Go Wrong</a><ul> 69 <li><a class="reference" href="#finding-out-what-went-wrong" id="id29" name="id29">Finding out What Went Wrong</a><ul> 70 <li><a class="reference" href="#buildtime-warnings" id="id30" name="id30">Buildtime Warnings</a></li> 71 <li><a class="reference" href="#getting-debug-messages" id="id31" name="id31">Getting Debug Messages</a></li> 72 <li><a class="reference" href="#getting-python-s-verbose-imports" id="id32" name="id32">Getting Python's Verbose Imports</a></li> 69 <li><a class="reference" href="#when-things-go-wrong" id="id29" name="id29">When Things Go Wrong</a><ul> 70 <li><a class="reference" href="#finding-out-what-went-wrong" id="id30" name="id30">Finding out What Went Wrong</a><ul> 71 <li><a class="reference" href="#buildtime-warnings" id="id31" name="id31">Buildtime Warnings</a></li> 72 <li><a class="reference" href="#getting-debug-messages" id="id32" name="id32">Getting Debug Messages</a></li> 73 <li><a class="reference" href="#getting-python-s-verbose-imports" id="id33" name="id33">Getting Python's Verbose Imports</a></li> 73 74 </ul> 74 75 </li> 75 <li><a class="reference" href="#helping-installer-find-modules" id="id33" name="id33">Helping Installer Find Modules</a><ul> 76 <li><a class="reference" href="#extending-the-path" id="id34" name="id34">Extending the Path</a></li> 77 <li><a class="reference" href="#listing-hidden-imports" id="id35" name="id35">Listing Hidden Imports</a></li> 78 <li><a class="reference" href="#extending-a-package-s-path" id="id36" name="id36">Extending a Package's <tt class="docutils literal"><span class="pre">__path__</span></tt></a></li> 79 <li><a class="reference" href="#changing-runtime-behavior" id="id37" name="id37">Changing Runtime Behavior</a></li> 80 <li><a class="reference" href="#adapting-to-being-frozen" id="id38" name="id38">Adapting to being "frozen"</a></li> 81 <li><a class="reference" href="#accessing-data-files" id="id39" name="id39">Accessing Data Files</a></li> 76 <li><a class="reference" href="#helping-installer-find-modules" id="id34" name="id34">Helping Installer Find Modules</a><ul> 77 <li><a class="reference" href="#extending-the-path" id="id35" name="id35">Extending the Path</a></li> 78 <li><a class="reference" href="#listing-hidden-imports" id="id36" name="id36">Listing Hidden Imports</a></li> 79 <li><a class="reference" href="#extending-a-package-s-path" id="id37" name="id37">Extending a Package's <tt class="docutils literal"><span class="pre">__path__</span></tt></a></li> 80 <li><a class="reference" href="#changing-runtime-behavior" id="id38" name="id38">Changing Runtime Behavior</a></li> 81 <li><a class="reference" href="#adapting-to-being-frozen" id="id39" name="id39">Adapting to being "frozen"</a></li> 82 <li><a class="reference" href="#accessing-data-files" id="id40" name="id40">Accessing Data Files</a></li> 82 83 </ul> 83 84 </li> 84 85 </ul> 85 86 </li> 86 <li><a class="reference" href="#miscellaneous" id="id40" name="id40">Miscellaneous</a><ul> 87 <li><a class="reference" href="#pmw-python-mega-widgets" id="id41" name="id41">Pmw -- Python Mega Widgets</a></li> 88 <li><a class="reference" href="#win9xpopen" id="id42" name="id42">Win9xpopen</a></li> 89 <li><a class="reference" href="#self-extracting-executables" id="id43" name="id43">Self-extracting executables</a><ul> 90 <li><a class="reference" href="#one-pass-execution" id="id44" name="id44">One Pass Execution</a></li> 91 <li><a class="reference" href="#two-pass-execution" id="id45" name="id45">Two Pass Execution</a></li> 87 <li><a class="reference" href="#miscellaneous" id="id41" name="id41">Miscellaneous</a><ul> 88 <li><a class="reference" href="#pmw-python-mega-widgets" id="id42" name="id42">Pmw -- Python Mega Widgets</a></li> 89 <li><a class="reference" href="#win9xpopen" id="id43" name="id43">Win9xpopen</a></li> 90 <li><a class="reference" href="#self-extracting-executables" id="id44" name="id44">Self-extracting executables</a><ul> 91 <li><a class="reference" href="#one-pass-execution" id="id45" name="id45">One Pass Execution</a></li> 92 <li><a class="reference" href="#two-pass-execution" id="id46" name="id46">Two Pass Execution</a></li> 92 93 </ul> 93 94 </li> 94 95 </ul> 95 96 </li> 96 <li><a class="reference" href="#pyinstaller-archives" id="id46" name="id46">PyInstaller Archives</a><ul> 97 <li><a class="reference" href="#archives-introduction" id="id47" name="id47">Archives Introduction</a></li> 98 <li><a class="reference" href="#zlibarchive" id="id48" name="id48"><tt class="docutils literal"><span class="pre">ZlibArchive</span></tt></a></li> 99 <li><a class="reference" href="#carchive" id="id49" name="id49"><tt class="docutils literal"><span class="pre">CArchive</span></tt></a></li> 97 <li><a class="reference" href="#pyinstaller-archives" id="id47" name="id47">PyInstaller Archives</a><ul> 98 <li><a class="reference" href="#archives-introduction" id="id48" name="id48">Archives Introduction</a></li> 99 <li><a class="reference" href="#zlibarchive" id="id49" name="id49"><tt class="docutils literal"><span class="pre">ZlibArchive</span></tt></a></li> 100 <li><a class="reference" href="#carchive" id="id50" name="id50"><tt class="docutils literal"><span class="pre">CArchive</span></tt></a></li> 100 101 </ul> 101 102 </li> 102 <li><a class="reference" href="#license" id="id50" name="id50">License</a></li> 103 <li><a class="reference" href="#appendix" id="id51" name="id51">Appendix</a><ul> 104 <li><a class="reference" href="#mf-py-a-modulefinder-replacement" id="id52" name="id52"><tt class="docutils literal"><span class="pre">mf.py</span></tt>: A Modulefinder Replacement</a><ul> 105 <li><a class="reference" href="#importtracker" id="id53" name="id53">ImportTracker</a></li> 106 <li><a class="reference" href="#analyze-one" id="id54" name="id54"><tt class="docutils literal"><span class="pre">analyze_one()</span></tt></a></li> 107 <li><a class="reference" href="#module-classes" id="id55" name="id55">Module Classes</a></li> 108 <li><a class="reference" href="#code-scanning" id="id56" name="id56">code scanning</a></li> 109 <li><a class="reference" href="#hooks" id="id57" name="id57">Hooks</a></li> 110 <li><a class="reference" href="#warnings" id="id58" name="id58">Warnings</a></li> 111 <li><a class="reference" href="#cross-reference" id="id59" name="id59">Cross Reference</a></li> 112 <li><a class="reference" href="#usage" id="id60" name="id60">Usage</a></li> 103 <li><a class="reference" href="#license" id="id51" name="id51">License</a></li> 104 <li><a class="reference" href="#appendix" id="id52" name="id52">Appendix</a><ul> 105 <li><a class="reference" href="#mf-py-a-modulefinder-replacement" id="id53" name="id53"><tt class="docutils literal"><span class="pre">mf.py</span></tt>: A Modulefinder Replacement</a><ul> 106 <li><a class="reference" href="#importtracker" id="id54" name="id54">ImportTracker</a></li> 107 <li><a class="reference" href="#analyze-one" id="id55" name="id55"><tt class="docutils literal"><span class="pre">analyze_one()</span></tt></a></li> 108 <li><a class="reference" href="#module-classes" id="id56" name="id56">Module Classes</a></li> 109 <li><a class="reference" href="#code-scanning" id="id57" name="id57">code scanning</a></li> 110 <li><a class="reference" href="#hooks" id="id58" name="id58">Hooks</a></li> 111 <li><a class="reference" href="#warnings" id="id59" name="id59">Warnings</a></li> 112 <li><a class="reference" href="#cross-reference" id="id60" name="id60">Cross Reference</a></li> 113 <li><a class="reference" href="#usage" id="id61" name="id61">Usage</a></li> 113 114 </ul> 114 115 </li> 115 <li><a class="reference" href="#iu-py-an-imputil-replacement" id="id61" name="id61"><tt class="docutils literal"><span class="pre">iu.py</span></tt>: An <em>imputil</em> Replacement</a><ul> 116 <li><a class="reference" href="#importmanager" id="id62" name="id62"><tt class="docutils literal"><span class="pre">ImportManager</span></tt></a></li> 117 <li><a class="reference" href="#importdirector" id="id63" name="id63"><tt class="docutils literal"><span class="pre">ImportDirector</span></tt></a></li> 118 <li><a class="reference" href="#pathimportdirector" id="id64" name="id64"><tt class="docutils literal"><span class="pre">PathImportDirector</span></tt></a></li> 119 <li><a class="reference" href="#owner" id="id65" name="id65"><tt class="docutils literal"><span class="pre">Owner</span></tt></a></li> 120 <li><a class="reference" href="#packages" id="id66" name="id66">Packages</a></li> 121 <li><a class="reference" href="#possibilities" id="id67" name="id67">Possibilities</a></li> 122 <li><a class="reference" href="#compatibility" id="id68" name="id68">Compatibility</a></li> 123 <li><a class="reference" href="#performance" id="id69" name="id69">Performance</a></li> 124 <li><a class="reference" href="#limitations" id="id70" name="id70">Limitations</a></li> 125 <li><a class="reference" href="#id1" id="id71" name="id71">Usage</a></li> 116 <li><a class="reference" href="#iu-py-an-imputil-replacement" id="id62" name="id62"><tt class="docutils literal"><span class="pre">iu.py</span></tt>: An <em>imputil</em> Replacement</a><ul> 117 <li><a class="reference" href="#importmanager" id="id63" name="id63"><tt class="docutils literal"><span class="pre">ImportManager</span></tt></a></li> 118 <li><a class="reference" href="#importdirector" id="id64" name="id64"><tt class="docutils literal"><span class="pre">ImportDirector</span></tt></a></li> 119 <li><a class="reference" href="#pathimportdirector" id="id65" name="id65"><tt class="docutils literal"><span class="pre">PathImportDirector</span></tt></a></li> 120 <li><a class="reference" href="#owner" id="id66" name="id66"><tt class="docutils literal"><span class="pre">Owner</span></tt></a></li> 121 <li><a class="reference" href="#packages" id="id67" name="id67">Packages</a></li> 122 <li><a class="reference" href="#possibilities" id="id68" name="id68">Possibilities</a></li> 123 <li><a class="reference" href="#compatibility" id="id69" name="id69">Compatibility</a></li> 124 <li><a class="reference" href="#performance" id="id70" name="id70">Performance</a></li> 125 <li><a class="reference" href="#limitations" id="id71" name="id71">Limitations</a></li> 126 <li><a class="reference" href="#id1" id="id72" name="id72">Usage</a></li> 126 127 </ul> 127 128 </li> … … 353 354 of fitting something useful on a diskette are not gone forever! Installer has 354 355 been tested with many UPX versions without problems. Just get it and install it 355 on your PATH, then rerun configure. For Windows, that's all you need to know.</p> 356 on your PATH, then rerun configure.</p> 357 <p>For Windows, there is a problem of compatibility between UPX and executables 358 generated by Microsoft Visual Studio .NET 2003 (or the equivalent free 359 toolkit available for download). This is especially worrisome for users of 360 Python 2.4+, where most extensions (and Python itself) are compiled with that 361 compiler. This issue has been fixed in later beta versions of UPX, so you 362 will need at least UPX 1.92 beta. <a class="reference" href="#configuring-your-pyinstaller-setup">Configure.py</a> will check this for you 363 and complain if you have an older version of UPX and you are using Python 2.4.</p> 356 364 <div class="sidebar"> 357 365 <p class="first sidebar-title">UPX and Unix</p> … … 412 420 <p><a class="reference reference reference reference reference reference reference reference reference" href="#pyinstaller-manual">Back to Top</a></p> 413 421 </div> 422 <div class="section"> 423 <h2><a class="toc-backref" href="#id12" id="a-note-on-egg-files-and-setuptools" name="a-note-on-egg-files-and-setuptools">A Note on .egg files and setuptools</a></h2> 424 <p><a class="reference" href="http://peak.telecommunity.com/DevCenter/setuptools">setuptools</a> is a distutils extensions which provide many benefits, including 425 the ability to distribute the extension as <tt class="docutils literal"><span class="pre">egg</span></tt> files. Together with the 426 nifty <a class="reference" href="http://peak.telecommunity.com/DevCenter/EasyInstall">easy_install</a> (a tool which automatically locates, downloads and 427 installs Python extensions), <tt class="docutils literal"><span class="pre">egg</span></tt> files are becoming more and more 428 widespread as a way for distributing Python extensions.</p> 429 <p><tt class="docutils literal"><span class="pre">egg</span></tt> files are actually ZIP files under the hood, and they rely on the fact 430 that Python 2.4 is able to transparently import modules stored within ZIP 431 files. PyInstaller is currently <em>not</em> able to import and extract modules 432 within ZIP files, so code which uses extensions packaged as <tt class="docutils literal"><span class="pre">egg</span></tt> files 433 cannot be packaged with PyInstaller.</p> 434 <p>The workaround is pretty easy: you can use <tt class="docutils literal"><span class="pre">easy_install</span> <span class="pre">-Z</span></tt> at installation 435 time to ask <tt class="docutils literal"><span class="pre">easy_install</span></tt> to always decompress egg files. This will allow 436 PyInstaller to see the files and make the package correctly. If you have already 437 installed the modules, you can simply decompress them within a directory with 438 the same name of the <tt class="docutils literal"><span class="pre">egg</span></tt> file (including also the extension).</p> 439 <p>Support for <tt class="docutils literal"><span class="pre">egg</span></tt> files is planned for a future release of PyInstaller.</p> 440 <p><a class="reference reference reference reference reference reference reference reference reference reference" href="#pyinstaller-manual">Back to Top</a></p> 441 </div> 414 442 </div> 415 443 <div class="section"> 416 <h1><a class="toc-backref" href="#id1 2" id="pyinstaller-utilities" name="pyinstaller-utilities">PyInstaller Utilities</a></h1>444 <h1><a class="toc-backref" href="#id13" id="pyinstaller-utilities" name="pyinstaller-utilities">PyInstaller Utilities</a></h1> 416 444 <div class="section"> 417 <h2><a class="toc-backref" href="#id1 3" id="archiveviewer" name="archiveviewer">ArchiveViewer</a></h2>445 <h2><a class="toc-backref" href="#id14" id="archiveviewer" name="archiveviewer">ArchiveViewer</a></h2> 417 445 <pre class="literal-block"> 418 446 python ArchiveViewer.py <archivefile> … … 435 463 <dd>Quit.</dd> 436 464 </dl> 437 <p><a class="reference reference reference reference reference reference reference reference reference reference" href="#pyinstaller-manual">Back to Top</a></p> 465 <p><a class="reference reference reference reference reference reference reference reference reference reference reference" href="#pyinstaller-manual">Back to Top</a></p> 437 465 </div> 438 466 <div class="section"> 439 <h2><a class="toc-backref" href="#id1 4" id="bindepend" name="bindepend">bindepend</a></h2>467 <h2><a class="toc-backref" href="#id15" id="bindepend" name="bindepend">bindepend</a></h2> 439 467 <pre class="literal-block"> 440 468 python bindepend.py <executable_or_dynamic_library> … … 449 477 </div> 450 478 <div class="section"> 451 <h2><a class="toc-backref" href="#id1 5" id="grabversion-windows" name="grabversion-windows">GrabVersion (Windows)</a></h2>479 <h2><a class="toc-backref" href="#id16" id="grabversion-windows" name="grabversion-windows">GrabVersion (Windows)</a></h2> 451 479 <pre class="literal-block"> 452 480 python GrabVersion.py <executable_with_version_resource> … … 468 496 information you want, grab it's resource and edit it. Certainly easier than 469 497 the Version resource wizard in VC++.</p> 470 <p><a class="reference reference reference reference reference reference reference reference reference reference reference" href="#pyinstaller-manual">Back to Top</a></p> 498 <p><a class="reference reference reference reference reference reference reference reference reference reference reference reference" href="#pyinstaller-manual">Back to Top</a></p> 470 498 </div> 471 499 <div class="section"> 472 <h2><a class="toc-backref" href="#id1 6" id="analyzing-dependencies" name="analyzing-dependencies">Analyzing Dependencies</a></h2>500 <h2><a class="toc-backref" href="#id17" id="analyzing-dependencies" name="analyzing-dependencies">Analyzing Dependencies</a></h2> 472 500 <p>You can interactively track down dependencies, including getting 473 501 cross-references by using <tt class="docutils literal"><span class="pre">mf.py</span></tt>, documented in section <a class="reference" href="#mf-py-a-modulefinder-replacement">mf.py: A modulefinder 474 502 Replacement</a></p> 475 <p><a class="reference reference reference reference reference reference reference reference reference reference reference reference" href="#pyinstaller-manual">Back to Top</a></p> 503 <p><a class="reference reference reference reference reference reference reference reference reference reference reference reference reference" href="#pyinstaller-manual">Back to Top</a></p> 475 503 </div> 476 504 </div> 477 505 <div class="section"> 478 <h1><a class="toc-backref" href="#id1 7" id="spec-files" name="spec-files">Spec Files</a></h1>506 <h1><a class="toc-backref" href="#id18" id="spec-files" name="spec-files">Spec Files</a></h1> 478 506 <div class="section"> 479 <h2><a class="toc-backref" href="#id1 8" id="introduction" name="introduction">Introduction</a></h2>507 <h2><a class="toc-backref" href="#id19" id="introduction" name="introduction">Introduction</a></h2> 479 507 <p>Spec files are in Python syntax. They are evaluated by Build.py. A simplistic 480 508 spec file might look like this:</p> … … 514 542 single-file deployment, the binaries. In a single-directory deployment, a 515 543 directory is built containing a slim executable and the binaries.</p> 516 <p><a class="reference reference reference reference reference reference reference reference reference reference reference reference reference" href="#pyinstaller-manual">Back to Top</a></p> 544 <p><a class="reference reference reference reference reference reference reference reference reference reference reference reference reference reference" href="#pyinstaller-manual">Back to Top</a></p> 516 544 </div> 517 545 <div class="section"> 518 <h2><a class="toc-backref" href="#id 19" id="toc-class-table-of-contents" name="toc-class-table-of-contents">TOC Class (Table of Contents)</a></h2>546 <h2><a class="toc-backref" href="#id20" id="toc-class-table-of-contents" name="toc-class-table-of-contents">TOC Class (Table of Contents)</a></h2> 518 546 <p>Before you can do much with a spec file, you need to understand the 519 547 <tt class="docutils literal"><span class="pre">TOC</span></tt> (Table Of Contents) class.</p> … … 662 690 multiple executables with minimal redundancy. You'll need some top level code 663 691 in each executable to mount the common <tt class="docutils literal"><span class="pre">PYZ</span></tt>.</p> 664 <p><a class="reference reference reference reference reference reference reference reference reference reference reference reference reference reference" href="#pyinstaller-manual">Back to Top</a></p> 692 <p><a class="reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference" href="#pyinstaller-manual">Back to Top</a></p> 664 692 </div> 665 693 <div class="section"> 666 <h2><a class="toc-backref" href="#id2 0" id="target-subclasses" name="target-subclasses">Target Subclasses</a></h2>694 <h2><a class="toc-backref" href="#id21" id="target-subclasses" name="target-subclasses">Target Subclasses</a></h2> 666 694 <div class="section"> 667 <h3><a class="toc-backref" href="#id2 1" id="analysis" name="analysis">Analysis</a></h3>695 <h3><a class="toc-backref" href="#id22" id="analysis" name="analysis">Analysis</a></h3> 667 695 <pre class="literal-block"> 668 696 Analysis(scripts, pathex=None, hookspath=None, excludes=None) … … 694 722 any shared lib in <tt class="docutils literal"><span class="pre">/lib</span></tt> or <tt class="docutils literal"><span class="pre">/usr/lib</span></tt> is excluded.</dd> 695 723 </dl> 696 <p><a class="reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference" href="#pyinstaller-manual">Back to Top</a></p> 724 <p><a class="reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference" href="#pyinstaller-manual">Back to Top</a></p> 696 724 </div> 697 725 <div class="section"> 698 <h3><a class="toc-backref" href="#id2 2" id="pyz" name="pyz">PYZ</a></h3>726 <h3><a class="toc-backref" href="#id23" id="pyz" name="pyz">PYZ</a></h3> 698 726 <pre class="literal-block"> 699 727 PYZ(toc, name=None, level=9) … … 709 737 <dd>The Zlib compression level to use. If 0, the zlib module is not required.</dd> 710 738 </dl> 711 <p><a class="reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference" href="#pyinstaller-manual">Back to Top</a></p> 739 <p><a class="reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference" href="#pyinstaller-manual">Back to Top</a></p> 711 739 </div> 712 740 <div class="section"> 713 <h3><a class="toc-backref" href="#id2 3" id="pkg" name="pkg">PKG</a></h3>741 <h3><a class="toc-backref" href="#id24" id="pkg" name="pkg">PKG</a></h3> 713 741 <p>Generally, you will not need to create your own <tt class="docutils literal"><span class="pre">PKGs</span></tt>, as the <tt class="docutils literal"><span class="pre">EXE</span></tt> will do it for 714 742 you. This is one way to include read-only data in a single-file deployment, … … 732 760 forwarded to its container (usually a <tt class="docutils literal"><span class="pre">COLLECT</span></tt>).</dd> 733 761 </dl> 734 <p><a class="reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference" href="#pyinstaller-manual">Back to Top</a></p> 762 <p><a class="reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference" href="#pyinstaller-manual">Back to Top</a></p> 734 762 </div> 735 763 <div class="section"> 736 <h3><a class="toc-backref" href="#id2 4" id="exe" name="exe">EXE</a></h3>764 <h3><a class="toc-backref" href="#id25" id="exe" name="exe">EXE</a></h3> 736 764 <pre class="literal-block"> 737 765 EXE(*args, **kws) … … 772 800 as <tt class="docutils literal"><span class="pre">EXE</span></tt> is determined by a flag in <tt class="docutils literal"><span class="pre">config.dat</span></tt>. This flag is set to 773 801 non-ELF when using <tt class="docutils literal"><span class="pre">Make.py</span> <span class="pre">-n</span></tt>.</p> 774 <p><a class="reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference" href="#pyinstaller-manual">Back to Top</a></p> 802 <p><a class="reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference" href="#pyinstaller-manual">Back to Top</a></p> 774 802 </div> 775 803 <div class="section"> 776 <h3><a class="toc-backref" href="#id2 5" id="dll" name="dll">DLL</a></h3>804 <h3><a class="toc-backref" href="#id26" id="dll" name="dll">DLL</a></h3> 776 804 <p>On Windows, this provides support for doing in-process COM servers. It is not 777 805 generalized. However, embedders can follow the same model to build a special … … 781 809 write your own dll, but thanks to Allan Green for refactoring the C code and 782 810 making that a managable task.</p> 783 <p><a class="reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference" href="#pyinstaller-manual">Back to Top</a></p> 811 <p><a class="reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference" href="#pyinstaller-manual">Back to Top</a></p> 783 811 </div> 784 812 <div class="section"> 785 <h3><a class="toc-backref" href="#id2 6" id="collect" name="collect">COLLECT</a></h3>813 <h3><a class="toc-backref" href="#id27" id="collect" name="collect">COLLECT</a></h3> 785 813 <pre class="literal-block"> 786 814 COLLECT(*args, **kws) … … 799 827 </dd> 800 828 </dl> 801 <p><a class="reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference" href="#pyinstaller-manual">Back to Top</a></p> 829 <p><a class="reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference" href="#pyinstaller-manual">Back to Top</a></p> 801 829 </div> 802 830 <div class="section"> 803 <h3><a class="toc-backref" href="#id2 7" id="tree" name="tree">Tree</a></h3>831 <h3><a class="toc-backref" href="#id28" id="tree" name="tree">Tree</a></h3> 803 831 <pre class="literal-block"> 804 832 Tree(root, prefix=None, excludes=None) … … 823 851 <p>Since a <tt class="docutils literal"><span class="pre">Tree</span></tt> is a <tt class="docutils literal"><span class="pre">TOC</span></tt>, you can also use the exclude technique described above 824 852 in the section on <tt class="docutils literal"><span class="pre">TOCs</span></tt>.</p> 825 <p><a class="reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference" href="#pyinstaller-manual">Back to Top</a></p> 853 <p><a class="reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference" href="#pyinstaller-manual">Back to Top</a></p> 825 853 </div> 826 854 </div> 827 855 </div> 828 856 <div class="section"> 829 <h1><a class="toc-backref" href="#id2 8" id="when-things-go-wrong" name="when-things-go-wrong">When Things Go Wrong</a></h1>857 <h1><a class="toc-backref" href="#id29" id="when-things-go-wrong" name="when-things-go-wrong">When Things Go Wrong</a></h1> 829 857 <div class="section"> 830 <h2><a class="toc-backref" href="#id 29" id="finding-out-what-went-wrong" name="finding-out-what-went-wrong">Finding out What Went Wrong</a></h2>858 <h2><a class="toc-backref" href="#id30" id="finding-out-what-went-wrong" name="finding-out-what-went-wrong">Finding out What Went Wrong</a></h2> 830 858 <div class="section"> 831 <h3><a class="toc-backref" href="#id3 0" id="buildtime-warnings" name="buildtime-warnings">Buildtime Warnings</a></h3>859 <h3><a class="toc-backref" href="#id31" id="buildtime-warnings" name="buildtime-warnings">Buildtime Warnings</a></h3> 831 859 <p>When an <tt class="docutils literal"><span class="pre">Analysis</span></tt> step runs, it produces a warnings file (named <tt class="docutils literal"><span class="pre">warnproject.txt</span></tt>) 832 860 in the spec file's directory. Generally, most of these warnings are harmless. … … 859 887 <p>Any problem detected here can be handled by hooking the analysis of the module. 860 888 See <a class="reference" href="#listing-hidden-imports">Listing Hidden Imports</a> below for how to do it.</p> 861 <p><a class="reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference" href="#pyinstaller-manual">Back to Top</a></p> 889 <p><a class="reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference" href="#pyinstaller-manual">Back to Top</a></p> 861 889 </div> 862 890 <div class="section"> 863 <h3><a class="toc-backref" href="#id3 1" id="getting-debug-messages" name="getting-debug-messages">Getting Debug Messages</a></h3>891 <h3><a class="toc-backref" href="#id32" id="getting-debug-messages" name="getting-debug-messages">Getting Debug Messages</a></h3> 863 891 <p>Setting <tt class="docutils literal"><span class="pre">debug=1</span></tt> on an <tt class="docutils literal"><span class="pre">EXE</span></tt> will cause the executable to put out progress 864 892 messages (for console apps, these go to stdout; for Windows apps, these show as 865 893 MessageBoxes). This can be useful if you are doing complex packaging, or your 866 894 app doesn't seem to be starting, or just to learn how the runtime works.</p> 867 <p><a class="reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference" href="#pyinstaller-manual">Back to Top</a></p> 895 <p><a class="reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference" href="#pyinstaller-manual">Back to Top</a></p> 867 895 </div> 868 896 <div class="section"> 869 <h3><a class="toc-backref" href="#id3 2" id="getting-python-s-verbose-imports" name="getting-python-s-verbose-imports">Getting Python's Verbose Imports</a></h3>897 <h3><a class="toc-backref" href="#id33" id="getting-python-s-verbose-imports" name="getting-python-s-verbose-imports">Getting Python's Verbose Imports</a></h3> 869 897 <p>You can also pass a <tt class="docutils literal"><span class="pre">-v</span></tt> (verbose imports) flag to the embedded Python. This can 870 898 be extremely useful. I usually try it even on apparently working apps, just to … … 886 914 <p>These messages will always go to <tt class="docutils literal"><span class="pre">stdout</span></tt>, so you won't see them on Windows if 887 915 <tt class="docutils literal"><span class="pre">console=0</span></tt>.</p> 888 <p><a class="reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference" href="#pyinstaller-manual">Back to Top</a></p> 916 <p><a class="reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference" href="#pyinstaller-manual">Back to Top</a></p> 888 916 </div> 889 917 </div> 890 918 <div class="section"> 891 <h2><a class="toc-backref" href="#id3 3" id="helping-installer-find-modules" name="helping-installer-find-modules">Helping Installer Find Modules</a></h2>919 <h2><a class="toc-backref" href="#id34" id="helping-installer-find-modules" name="helping-installer-find-modules">Helping Installer Find Modules</a></h2> 891 919 <div class="section"> 892 <h3><a class="toc-backref" href="#id3 4" id="extending-the-path" name="extending-the-path">Extending the Path</a></h3>920 <h3><a class="toc-backref" href="#id35" id="extending-the-path" name="extending-the-path">Extending the Path</a></h3> 892 920 <p>When the analysis phase cannot find needed modules, it may be that the code is 893 921 manipulating <tt class="docutils literal"><span class="pre">sys.path</span></tt>. The easiest thing to do in this case is tell <tt class="docutils literal"><span class="pre">Analysis</span></tt> … … 909 937 </pre> 910 938 <p>(on *nix, use <tt class="docutils literal"><span class="pre">:</span></tt> as the path separator).</p> 911 <p><a class="reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference" href="#pyinstaller-manual">Back to Top</a></p> 939 <p><a class="reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference" href="#pyinstaller-manual">Back to Top</a></p> 911 939 </div> 912 940 <div class="section"> 913 <h3><a class="toc-backref" href="#id3 5" id="listing-hidden-imports" name="listing-hidden-imports">Listing Hidden Imports</a></h3>941 <h3><a class="toc-backref" href="#id36" id="listing-hidden-imports" name="listing-hidden-imports">Listing Hidden Imports</a></h3> 913 941 <p>Hidden imports are fairly common. These can occur when the code is using 914 942 <tt class="docutils literal"><span class="pre">__import__</span></tt> (or, perhaps <tt class="docutils literal"><span class="pre">exec</span></tt> or <tt class="docutils literal"><span class="pre">eval</span></tt>), in which case you will see a warning in … … 944 972 <p>If you successfully hook a publicly distributed module in this way, please send 945 973 us the hook so we can make it available to others.</p> 946 <p><a class="reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference" href="#pyinstaller-manual">Back to Top</a></p> 974 <p><a class="reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference" href="#pyinstaller-manual">Back to Top</a></p> 946 974 </div> 947 975 <div class="section"> 948 <h3><a class="toc-backref" href="#id3 6" id="extending-a-package-s-path" name="extending-a-package-s-path">Extending a Package's <tt class="docutils literal docutils literal"><span class="pre">__path__</span></tt></a></h3>976 <h3><a class="toc-backref" href="#id37" id="extending-a-package-s-path" name="extending-a-package-s-path">Extending a Package's <tt class="docutils literal docutils literal"><span class="pre">__path__</span></tt></a></h3> 948 976 <p>Python allows a package to extend the search path used to find modules and 949 977 sub-packages through the <tt class="docutils literal"><span class="pre">__path__</span></tt> mechanism. Normally, a package's <tt class="docutils literal"><span class="pre">__path__</span></tt> has … … 968 996 way as <tt class="docutils literal"><span class="pre">win32com.anythingelse</span></tt>, and <tt class="docutils literal"><span class="pre">win32com.__path__</span></tt> knows nothing of <tt class="docutils literal"><span class="pre">../win32comext</span></tt>.</p> 969 997 <p>Once in awhile, that's not enough.</p> 970 <p><a class="reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference" href="#pyinstaller-manual">Back to Top</a></p> 998 <p><a class="reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference" href="#pyinstaller-manual">Back to Top</a></p> 970 998 </div> 971 999 <div class="section"> 972 <h3><a class="toc-backref" href="#id3 7" id="changing-runtime-behavior" name="changing-runtime-behavior">Changing Runtime Behavior</a></h3>1000 <h3><a class="toc-backref" href="#id38" id="changing-runtime-behavior" name="changing-runtime-behavior">Changing Runtime Behavior</a></h3> 972 1000 <p>More bizarre situations can be accomodated with runtime hooks. These are small 973 1001 scripts that manipulate the environment before your main script runs, … … 993 1021 can generate modules at runtime (to disk), and the generated modules can be 994 1022 found in the win32com package.</p> 995 <p><a class="reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference" href="#pyinstaller-manual">Back to Top</a></p> 1023 <p><a class="reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference" href="#pyinstaller-manual">Back to Top</a></p> 995 1023 </div> 996 1024 <div class="section"> 997 <h3><a class="toc-backref" href="#id3 8" id="adapting-to-being-frozen" name="adapting-to-being-frozen">Adapting to being "frozen"</a></h3>1025 <h3><a class="toc-backref" href="#id39" id="adapting-to-being-frozen" name="adapting-to-being-frozen">Adapting to being "frozen"</a></h3> 997 1025 <p>In most sophisticated apps, it becomes necessary to figure out (at runtime) 998 1026 whether you're running "live" or "frozen". For example, you might have a … … 1006 1034 <p>For really advanced users, you can access the <tt class="docutils literal"><span class="pre">iu.ImportManager</span></tt> as 1007 1035 <tt class="docutils literal"><span class="pre">sys.importManager</span></tt>. See <a class="reference" href="#iu-py">iu.py</a> for how you might make use of this fact.</p> 1008 <p><a class="reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference" href="#pyinstaller-manual">Back to Top</a></p> 1036 <p><a class="reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference" href="#pyinstaller-manual">Back to Top</a></p> 1008 1036 </div> 1009 1037 <div class="section"> 1010 <h3><a class="toc-backref" href="#id 39" id="accessing-data-files" name="accessing-data-files">Accessing Data Files</a></h3>1038 <h3><a class="toc-backref" href="#id40" id="accessing-data-files" name="accessing-data-files">Accessing Data Files</a></h3> 1010 1038 <p>In a <tt class="docutils literal"><span class="pre">--onedir</span></tt> distribution, this is easy: pass a list of your data files 1011 1039 (in <tt class="docutils literal"><span class="pre">TOC</span></tt> format) to the <tt class="docutils literal"><span class="pre">COLLECT</span></tt>, and they will show up in the distribution … … 1034 1062 example (the TCL and TK lib files are in a PKG which is opened in place, and 1035 1063 then extracted to the filesystem).</p> 1036 <p><a class="reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference" href="#pyinstaller-manual">Back to Top</a></p> 1064 <p><a class="reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference reference" href="#pyinstaller-manual">Back to Top</a></p> 1036 1064 </div> 1037 1065 </div> 1038 1066 </div> 1039 1067 <div class="section"> 1040 <h1><a class="toc-backref" href="#id4 0" id="miscellaneous" name="miscellaneous">Miscellaneous</a></h1>1068 <h1><a class="toc-backref" href="#id41" id="miscellaneous" name="miscellaneous">Miscellaneous</a></h1> 1040 1068 <div class="section"> 1041 <h2><a class="toc-backref" href="#id4 1" id="pmw-python-mega-widgets" name="pmw-python-mega-widgets">Pmw -- Python Mega Widgets</a></h2>1069 <h2><a class="toc-backref" href="#id42" id="pmw-python-mega-widgets" name="pmw-python-mega-widgets">Pmw -- Python Mega Widgets</a></h2> 1041 1069 <p><a class="reference" href="http://pmw.sourceforge.net/">Pmw</a> comes with a script named <tt class="docutils literal"><span class="pre">bundlepmw</span></tt> in the bin directory. If you follow the 1042 1070 instructions in that script, you'll end up with a module named <tt class="docutils literal"><span class="pre">Pmw.py</span></tt>. Ensure 1043 1071 that Builder finds that module and not the development package.</p> 1044
