<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Distribution on SoloSoft</title><link>https://www.solosoft.dev/tags/distribution/</link><description>Recent content in Distribution on SoloSoft</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Fri, 01 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://www.solosoft.dev/tags/distribution/index.xml" rel="self" type="application/rss+xml"/><item><title>PyInstaller: Package Python Apps into Standalone Executables</title><link>https://www.solosoft.dev/post/pyinstaller-packaging-2026/</link><pubDate>Fri, 01 May 2026 00:00:00 +0000</pubDate><guid>https://www.solosoft.dev/post/pyinstaller-packaging-2026/</guid><description>&lt;p&gt;One of Python&amp;rsquo;s biggest challenges is distribution. Users need to install Python, manage virtual environments, and resolve dependencies before they can run your application. PyInstaller solves this by freezing Python applications into standalone executables that work on systems without Python installed.&lt;/p&gt;
&lt;p&gt;PyInstaller analyzes your Python script, discovers all imported modules and data files, and bundles them together with a minimal Python interpreter into a single executable file or directory. The result is a distributable package that users can run by double-clicking, just like any native application.&lt;/p&gt;
&lt;h2 id="key-features"&gt;Key Features&lt;/h2&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Feature&lt;/th&gt;
 &lt;th&gt;Description&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Cross-platform&lt;/td&gt;
 &lt;td&gt;Creates executables for Windows, macOS, and Linux&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;One-file mode&lt;/td&gt;
 &lt;td&gt;Bundle everything into a single executable&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Automatic dependency detection&lt;/td&gt;
 &lt;td&gt;Finds and includes all imported modules&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Hidden imports support&lt;/td&gt;
 &lt;td&gt;Manual specification for dynamic imports&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Data file bundling&lt;/td&gt;
 &lt;td&gt;Include images, configs, and assets&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="build-process"&gt;Build Process&lt;/h2&gt;

&lt;figure class="mermaid-wrapper not-prose" role="img" aria-label="Mermaid diagram"&gt;
 &lt;div class="mermaid-container"&gt;
 &lt;pre class="mermaid"&gt;flowchart LR
 A[Python Script] --&amp;gt; B[PyInstaller Analysis]
 B --&amp;gt; C[Dependency Discovery]
 C --&amp;gt; D{Import Found}
 D --&amp;gt;|Standard Lib| E[Bundled]
 D --&amp;gt;|Third Party| E
 D --&amp;gt;|Data Files| E
 E --&amp;gt; F[Build Artifacts]
 F --&amp;gt; G{Output Mode}
 G --&amp;gt;|One File| H[single EXE/APP]
 G --&amp;gt;|One Directory| I[Directory with all files]
 G --&amp;gt;|Custom| J[Spec file controls]&lt;/pre&gt;
 &lt;script type="application/mermaid"&gt;flowchart LR
 A[Python Script] --&gt; B[PyInstaller Analysis]
 B --&gt; C[Dependency Discovery]
 C --&gt; D{Import Found}
 D --&gt;|Standard Lib| E[Bundled]
 D --&gt;|Third Party| E
 D --&gt;|Data Files| E
 E --&gt; F[Build Artifacts]
 F --&gt; G{Output Mode}
 G --&gt;|One File| H[single EXE/APP]
 G --&gt;|One Directory| I[Directory with all files]
 G --&gt;|Custom| J[Spec file controls]&lt;/script&gt;
 &lt;/div&gt;
&lt;/figure&gt;&lt;p&gt;PyInstaller first analyzes the script to understand its dependency tree, then bundles everything together. The spec file gives advanced users fine-grained control over every aspect of the build.&lt;/p&gt;</description></item></channel></rss>