pyinstaller
PyInstaller bundles a Python application and all its dependencies into a single package.
What it is and what it does
PyInstaller is a mature Python packaging tool that analyzes your Python script, discovers all its dependencies, and bundles them together with a Python interpreter into a single executable or folder. The resulting package runs on target systems without requiring Python or any modules to be pre-installed. It works on Windows, macOS, and Linux, and handles major packages out-of-the-box through integrated compatibility hooks.
The tool is not a cross-compiler: you must run it on the target platform to build for that platform. It supports Python 3.8-3.15 and includes platform-specific wheels for multiple architectures on Linux, plus Windows and macOS. The project is actively maintained with no known vulnerabilities and has been in development since 2012.
Use it for:
- Distribute a Python CLI tool or desktop application to end users who do not have Python installed.
- Create a standalone executable for Windows, macOS, or Linux from a Python script for easier deployment.
- Bundle a data science application into a single distributable file without requiring users to manage Python environments.
- Package a GUI application for cross-platform delivery without requiring users to manage Python environments.
- Build a standalone tool for system administrators or non-technical users who need to run Python code without a development setup.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
PyInstaller bundles a Python application and all its dependencies into a single standalone executable or folder that runs without requiring a Python interpreter or installed modules on the target system.
Yes. PyInstaller is a mature, actively maintained tool with no known vulnerabilities, broad platform support, and built-in compatibility for major Python packages. The medium install friction (8 dependencies, platform-specific wheels) is offset by its proven track record and active development. Install it if you need to distribute Python applications as standalone executables.
Install
pyinstaller on PyPI
pip
pip install pyinstalleruv
uv add pyinstallerpoetry
poetry add pyinstallerInstalling pyinstaller
Before you install
Medium install friction due to 8 runtime dependencies and platform-specific wheels; however, the project is actively maintained (last commit 2026-08-13) with mature status and no known vulnerabilities, making it a stable choice despite the dependency footprint.
License in practice
Licensed under GPLv2-or-later with a special exception permitting use to build and distribute non-free and commercial programs. The copyleft treatment applies to PyInstaller itself, but the exception means you can bundle proprietary code without inheriting GPL obligations on your application.
Quickstart
pip install pyinstaller
pyinstaller /path/to/yourscript.py
Requires a C compiler (gcc or clang) and zlib development headers on non-Windows platforms; Python 3.10.0 is unsupported; not a cross-compiler—target platform must match build platform.
Verify before relying
- Whether the 8 runtime dependencies (altgraph, importlib-metadata, macholib, packaging, pefile, pyinstaller-hooks-contrib, pywin32-ctypes, setuptools) introduce any transitive security concerns or version conflicts in your environment.
- Performance characteristics and bundle size overhead for large applications with many dependencies.
Package facts
| License | GPLv2-or-later with a special exception which allows to use PyInstaller to build and distribute non-free programs (including commercial ones) (copyleft) |
| Python support | supports the current Python release (<3.16,>=3.8) |
| Install friction | medium — platform-specific wheel |
| Runtime dependencies | 8 — altgraph, importlib-metadata, macholib, packaging, pefile, pyinstaller-hooks-contrib, pywin32-ctypes, setuptools |
| Maintenance | actively maintained — 6 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 12,067,723/month — #1,346 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: pyinstaller-6.22.0-py3-none-macosx_10_13_universal2.whl; pyinstaller-6.22.0-py3-none-manylinux2014_aarch64.whl; pyinstaller-6.22.0-py3-none-manylinux2014_i686.whl; pyinstaller-6.22.0-py3-none-manylinux2014_ppc64le.whl; pyinstaller-6.22.0-py3-none-manylinux2014_s390x.whl; pyinstaller-6.22.0-py3-none-manylinux2014_x86_64.whl; pyinstaller-6.22.0-py3-none-musllinux_1_1_aarch64.whl; pyinstaller-6.22.0-py3-none-musllinux_1_1_x86_64.whl; pyinstaller-6.22.0-py3-none-win32.whl; pyinstaller-6.22.0-py3-none-win_amd64.whl; pyinstaller-6.22.0-py3-none-win_arm64.whl
Keywords: app, apps, bundle, convert, executable, packaging, standalone
Tags
More Software Development packages
Provides backported and experimental type hints…
permissive · top 100 on PyPI
numpyNumPy provides an N-dimensional array object…
permissive · top 100 on PyPI
fastapiFastAPI is a Python web framework for building…
permissive · top 100 on PyPI
annotated-docProvides a way to document function parameters,…
permissive · top 100 on PyPI
typerTyper builds command-line applications from…
permissive · top 1,000 on PyPI
distlibDistlib provides low-level packaging utilities…
permissive · top 1,000 on PyPI
auto-py-to-exeProvides a graphical interface to convert…
permissive · top 15,000 on PyPI
pyinstxtractor-ngExtracts Python bytecode and resources from…
copyleft · top 15,000 on PyPI
pyinstaller-hooks-contribProvides community-maintained hooks that extend…
unclear · top 5,000 on PyPI
pexPex generates standalone, executable Python…
permissive · top 5,000 on PyPI
NuitkaNuitka compiles Python code to C and then to…
agpl · top 15,000 on PyPI
types-pyinstallerProvides type stubs for pyinstaller, enabling…
permissive · top 15,000 on PyPI
executable-applicationA minimal executable application package…
unclear · top 15,000 on PyPI
pyinstaller-versionfileGenerates Windows VERSIONINFO resource files…
permissive · top 15,000 on PyPI
ray-haproxyProvides a pre-built HAProxy binary bundled…
copyleft · top 15,000 on PyPI
jdk4pyBundles a JDK runtime into a Python package,…
copyleft · top 15,000 on PyPI