David Cortesi, based on structure by Giovanni Bajo & William Caban, based on Gordon McMillan’s manual
This document has been placed in the public domain.
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. PyInstaller supports Python 3.6 or newer, and correctly bundles the major Python packages such as numpy, PyQt, Django, wxPython, and others.
PyInstaller is tested against Windows, Mac OS X, 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 testing against them is not part of our continuous integration tests.
What’s New This Release¶
Release 4.0 adds support for 3rd-party packages to provide PyInstaller hooks along with the package. This allows Maintainers of other Python packages to deliver up-to-date PyInstaller hooks as part of their package. See our sample project for more information.
PyInstaller uses this option itself to provide updated hooks much faster: Many hooks are moved into the new package pyinstaller-hooks-contrib, which is updated monthly. This package is installed automatically when installing PyInstaller, but can also be updated independently.
Finally, this version drops support for Python 2.7, which is end-of-life since January 2020.. The minimum required version is now Python 3.6. The last version supporting Python 2.7 was PyInstaller 3.6.
- How To Contribute
- How to Install PyInstaller
- What PyInstaller Does and How It Does It
- Using PyInstaller
- Shortening the Command
- Running PyInstaller from Python code
- Running PyInstaller with Python optimizations
- Using UPX
- Encrypting Python Bytecode
- Splash Screen (Experimental)
- Defining the Extraction Location
- Supporting Multiple Platforms
- Capturing Windows Version Data
- Building Mac OS X App Bundles
- Platform-specific Notes
- Run-time Information
- Using Spec Files
- Notes about specific Features
- When Things Go Wrong
- Advanced Topics
- Understanding PyInstaller Hooks
- Building the Bootloader
- Changelog for PyInstaller
- Contributions to PyInstaller 4.4
- Contributions to PyInstaller 4.3
- Contributions to PyInstaller 4.2
- Contributions to PyInstaller 4.1
- Contributions to PyInstaller 4.0
- Contributions to PyInstaller 3.6
- Contributions to PyInstaller 3.5
- Contributions to PyInstaller 3.4
- Contributions to PyInstaller 3.3.1
- Contributions to PyInstaller 3.3
- Contributions to PyInstaller 3.2.1
- Contributions to PyInstaller 3.2
- Contributions to PyInstaller 3.1.1
- Contributions to PyInstaller 3.1
- Contributions to PyInstaller 3.0
- Contributions to PyInstaller 2.1 and older
- Man Pages
- Development Guide