The Principal Dev – Masterclass for Tech Leads

The Principal Dev – Masterclass for Tech LeadsJuly 17-18

Join

PyInstaller Overview

PyPI

PyPI - Python Version

Read the Docs (version)

PyPI - Downloads

PyInstaller bundles a Python application and all its dependencies into a single package. The user can run the packaged app without installing a Python interpreter or any modules.

Documentation : https://pyinstaller.org/

Code : https://github.com/pyinstaller/pyinstaller

PyInstaller reads a Python script written by you. It analyzes your code to discover every other module and library your script needs in order to execute. Then it collects copies of all those files -- including the active Python interpreter! -- and puts them with your script in a single folder, or optionally in a single executable file.

PyInstaller is tested against Windows, macOS, and GNU/Linux. However, it is not a cross-compiler: to make a Windows app you run PyInstaller in Windows; to make a GNU/Linux app you run it in GNU/Linux, etc. PyInstaller has been used successfully with AIX, Solaris, FreeBSD and OpenBSD, but is not tested against them as part of the continuous integration tests.

Main Advantages

Installation

PyInstaller is available on PyPI. You can install it through `pip`:

pip install pyinstaller

Requirements and Tested Platforms

Python:

:   -   3.8-3.13. Note that Python 3.10.0 contains a bug making it
        unsupportable by PyInstaller. PyInstaller will also not work
        with beta releases of Python 3.14.
Windows (32bit/64bit/ARM64):

:   -   PyInstaller should work on Windows 7 or newer, but we only
        officially support Windows 8+.
    -   Support for Python installed from the Windows store without
        using virtual environments requires PyInstaller 4.4 or
        later.
Linux:

:   -   GNU libc based distributions on architectures `x86_64`,
        `aarch64`, `i686`, `ppc64le`, `s390x`.
    -   musl libc based distributions on architectures `x86_64`,
        `aarch64`.
    -   ldd: Console application to print the shared libraries
        required by each program or shared library. This typically
        can be found in the distribution-package [glibc]{.title-ref}
        or [libc-bin]{.title-ref}.
    -   objdump: Console application to display information from
        object files. This typically can be found in the
        distribution-package [binutils]{.title-ref}.
    -   objcopy: Console application to copy and translate object
        files. This typically can be found in the
        distribution-package [binutils]{.title-ref}, too.
    -   Raspberry Pi users on `armv5`-`armv7` should [add piwheels
        as an extra index url](https://www.piwheels.org/) then
        `pip install pyinstaller` as usual.
macOS (`x86_64` or `arm64`):

:   -   macOS 10.15 (Catalina) or newer.
    -   Supports building `universal2` applications provided that
        your installation of Python and all your dependencies are
        also compiled `universal2`.

Usage

Basic usage is very simple, just run it against your main script:

pyinstaller /path/to/yourscript.py

For more details, see the manual.

Untested Platforms

The following platforms have been contributed and any feedback or enhancements on these are welcome.

FreeBSD

:   -   ldd
Solaris

:   -   ldd
    -   objdump
AIX

:   -   AIX 6.1 or newer. PyInstaller will not work with statically
        linked Python libraries.
    -   ldd

Before using any contributed platform, you need to build the PyInstaller bootloader. This will happen automatically when you pip install pyinstaller provided that you have an appropriate C compiler (typically either gcc or clang) and zlib's development headers already installed.

Support

Changes in this Release

You can find a detailed list of changes in this release in the Changelog section of the manual.

Join libs.tech

...and unlock some superpowers

GitHub

We won't share your data with anyone else.