Python Application Packaging Tools – An overview
I’m a passionate and experienced Software Engineer from Zadar, Croatia, with a strong appreciation for open-source. I specialize in backend systems, web apps, and cloud-native solutions, always eager to explore new tools and technologies.
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.
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.
In this blog series, I plan to explore each tool, discussing their advantages and disadvantages, usage, and internal workings.
DISCLAIMER: 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.
Tools i plan to explore
PyInstaller (https://pyinstaller.org/en/stable/)
cx_freeze (https://cx-freeze.readthedocs.io/en/stable/)
briefcase (https://beeware.org/briefcase/)
PyOxidizer (https://github.com/indygreg/PyOxidizer)
Nuitka (https://nuitka.net/)
PyApp (https://github.com/ofek/pyapp)
py2exe (https://www.py2exe.org/)
Packaged (https://packaged.live/)
PyCrucible (https://github.com/razorblade23/PyCrucible)