<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Code & Curios]]></title><description><![CDATA[A curious developer’s logbook — tools, code, and personal thoughts.]]></description><link>https://blog.razorblade23.dev</link><generator>RSS for Node</generator><lastBuildDate>Mon, 11 May 2026 06:48:42 GMT</lastBuildDate><atom:link href="https://blog.razorblade23.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Python Application Packaging Tools – An overview]]></title><description><![CDATA[Python offers numerous methods to transform scripts into standalone applications. Packaging tools are designed to bundle your code, libraries, and often a Python interpreter, enabling users to run your app without the need to manually install Python ...]]></description><link>https://blog.razorblade23.dev/overview</link><guid isPermaLink="true">https://blog.razorblade23.dev/overview</guid><category><![CDATA[General Programming]]></category><category><![CDATA[Python]]></category><category><![CDATA[Bundle]]></category><category><![CDATA[pyinstaller]]></category><category><![CDATA[pyinstaller onefile exe]]></category><category><![CDATA[packaging]]></category><dc:creator><![CDATA[Josip Čubrić (razorblade23)]]></dc:creator><pubDate>Thu, 10 Jul 2025 13:21:23 GMT</pubDate><content:encoded><![CDATA[<p>Python offers numerous methods to transform scripts into standalone applications. Packaging tools are designed to bundle your code, libraries, and often a Python interpreter, enabling users to run your app without the need to manually install Python or its dependencies.</p>
<p>Each tool employs a unique approach – some generate a single executable, while others create a directory or installer. They vary in terms of OS support, performance, output size, and use cases.</p>
<p>In this blog series, I plan to explore each tool, discussing their advantages and disadvantages, usage, and internal workings.</p>
<blockquote>
<p><strong>DISCLAIMER:</strong> I am not an expert on these tools or Python. I have been a developer for the past 7 years, primarily working with Python. This article reflects my personal opinions and insights gained from some testing with these tools.</p>
</blockquote>
<h3 id="heading-tools-i-plan-to-explore">Tools i plan to explore</h3>
<ul>
<li><p>PyInstaller (<a target="_blank" href="https://pyinstaller.org/en/stable/">https://pyinstaller.org/en/stable/</a>)</p>
</li>
<li><p>cx_freeze (<a target="_blank" href="https://cx-freeze.readthedocs.io/en/stable/">https://cx-freeze.readthedocs.io/en/stable/</a>)</p>
</li>
<li><p>shiv (<a target="_blank" href="https://shiv.readthedocs.io/en/latest/">https://shiv.readthedocs.io/en/latest/</a>)</p>
</li>
<li><p>PeX (<a target="_blank" href="https://docs.pex-tool.org/">https://docs.pex-tool.org/</a>)</p>
</li>
<li><p>briefcase (<a target="_blank" href="https://beeware.org/briefcase/">https://beeware.org/briefcase/</a>)</p>
</li>
<li><p>zipapp (<a target="_blank" href="https://docs.python.org/3/library/zipapp.html">https://docs.python.org/3/library/zipapp.html</a>)</p>
</li>
<li><p>PyOxidizer (<a target="_blank" href="https://github.com/indygreg/PyOxidizer">https://github.com/indygreg/PyOxidizer</a>)</p>
</li>
<li><p>Nuitka (<a target="_blank" href="https://nuitka.net/">https://nuitka.net/</a>)</p>
</li>
<li><p>PyApp (<a target="_blank" href="https://github.com/ofek/pyapp">https://github.com/ofek/pyapp</a>)</p>
</li>
<li><p>py2exe (<a target="_blank" href="https://www.py2exe.org/">https://www.py2exe.org/</a>)</p>
</li>
<li><p>py2app (<a target="_blank" href="https://py2app.readthedocs.io/en/latest/">https://py2app.readthedocs.io/en/latest/</a>)</p>
</li>
<li><p>Packaged (<a target="_blank" href="https://packaged.live/">https://packaged.live/</a>)</p>
</li>
<li><p>PyCrucible (<a target="_blank" href="https://github.com/razorblade23/PyCrucible">https://github.com/razorblade23/PyCrucible</a>)</p>
</li>
</ul>
]]></content:encoded></item></channel></rss>