All Versions
Latest Version
Avg Release Cycle
170 days
Latest Release
1280 days ago

Changelog History
Page 1

  • v4.1 Changes

    November 18, 2020

    ๐Ÿš€ You can find a detailed list of changes in this release in the change log section of the manual.

  • v4.0 Changes

    August 09, 2020

    ๐Ÿš€ 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.5. The last version supporting Python 2.7 was PyInstaller 3.6.

    ๐Ÿš€ You can find a detailed list of changes in this release in the change log section of the manual.

  • v3.6 Changes

    January 09, 2020
  • v3.5 Changes

    July 09, 2019
  • v3.4 Changes

    September 09, 2018
  • v3.3.1 Changes

    December 15, 2017


    • Fix imports in hooks accessible_output and sound_lib (#2860).
    • ๐Ÿ›  Fix ImportError for sysconfig for 3.5.4 Conda (#3105, #3106).
    • ๐Ÿ›  Fix shapely hook for conda environments on Windows (#2838).
    • โž• Add hook for unidecode.


    • ๐Ÿ (Windows) Pre-build bootloaders (and custom-build ones using MSVC) can be
      ๐Ÿ used on Windows XP again. Set minimum target OS to XP (#2974).

    ๐Ÿ— Bootloader build

    PyInstaller Core

    Usage: Add help-message clarifying use of options when a spec-file is
    provided (#3039).

    Add printing infos on UnicodeDecodeError in exec_command(_all).

    (win32) Issue an error message on errors loading the icon file (#2039).

    (aarch64) Use correct bootloader for 64-bit ARM (#2873).

    (OS X) Fix replacement of run-time search path keywords (@โ€ฆ ) (#3100).


    • Fix recursion too deep errors cause by reimporting SWIG-like modules (#2911, #3040, #3061).
    • Keep order of imported identifiers.

    โœ… Test-suite and Continuous Integration

    ๐Ÿ‘• In Continuous Integration tests: Enable flake8-diff linting. This will
    refuse all changed lines not following PEP 8.

    ๐Ÿ Enable parallel testing on Windows,

    โšก๏ธ Update requirements.

    โž• Add more test cases for modulegraph.

    ๐Ÿ›  Fix a test-case for order of module import.

    โž• Add test-cases to check scripts do not share the same global vars (see below).

    ๐Ÿ“š Documentation

    โž• Add clarification about treatment of options when a spec-file is provided

    โž• Add docs for running PyInstaller with Python optimizations (#2905).

    โž• Add notes about limitations of Cython support.

    โž• Add information how to handle undetected ctypes libraries.

    โž• Add notes about requirements and restrictions of SWIG support.

    โž• Add note to clarify what binary files are.

    โž• Add a Development Guide.

    Extend "How to Contribute".

    โž• Add "Running the Test Suite".

    โœ‚ Remove badges from the Readme (#2853).

    โšก๏ธ Update outdated sections in man-pages and other enhancements to the

    Known Issues

    ๐Ÿ“ฆ All scripts frozen into the package, as well as all run-time hooks, share
    the same global variables. This issue exists since v3.2 but was discovered
    ๐Ÿ‘€ only lately, see #3037. This may lead to leaking global variables
    from run-time hooks into the script and from one script to subsequent ones.
    It should have effects in rare cases only, though.

    ๐Ÿš€ Further see the Known Issues for release 3.3.

  • v3.3 Changes

    September 21, 2017

    โž• Add Support for Python 3.6! Many thanks to xiovat! (#2331, #2341)

    ๐Ÿ†• New command line options for adding data files (--datas, #1990) and
    binaries (--binaries, #703)

    โž• Add command line option '--runtime-tmpdir'.

    ๐Ÿ Bootloaders for Windows are now build using MSVC and statically linked with
    the run-time-library (CRT). This solved a lot of issues related to .dlls
    being incompatible with the ones required by python.dll.

    ๐Ÿง Bootloaders for GNU/Linux are now officially no LSB binaries. This was
    ๐Ÿš€ already the case since release 3.1, but documented the other way round. Also
    ๐Ÿ— the build defaults to non-LSB binaries now. (#2369)

    ๐Ÿ— We improved and stabilized both building the bootloaders and the continuous
    ๐Ÿ‘€ integration tests. See below for details. Many thanks to all who worked on

    ๐Ÿ“ฆ To ease solving issues with packages included wrongly, the html-file with a
    cross-reference is now always generated. It's visual appearance has been
    modernized (#2765).

    Incompatible changes

    Command-line option obsoleted several version ago are not longer handled
    gracefully but raise an error (#2413)

    ๐Ÿšš Installation: PyInstaller removed some internal copies of 3rd-party
    ๐Ÿš€ packages. These are now taken from their official releases at PyPI (#2589).
    This results in PyInstaller to no longer can be used from just an unpacked
    ๐Ÿ“ฆ archive, but needs to be installed like any Python package. This should
    effect only a few people, e.g. the developers.

    ๐Ÿš€ Following :pep:527, we only release one source archive now and decided to
    ๐Ÿ‘‰ use .tar.gz (#2754).


    ๐Ÿ†• New and Updated hooks: accessible_output2 (#2266), ADIOS (#2096), CherryPy
    (#2112), PySide2 (#2471, #2744) (#2472), Sphinx (#2612, 2708) (#2708),
    appdir (#2478), clr (#2048), cryptodome (#2125), cryptography (#2013), dclab
    (#2657), django (#2037), django migrations (#1795), django.contrib (#2336),,, gstreamer (#2603), imageio (#2696),
    langcodes (#2682), libaudioverse (#2709), mpl_toolkits (#2400), numba,
    ๐Ÿ‘• llvmlite (#2113), openpyxl (#2066), pylint, pymssql, pyopencl, pyproj
    โœ… (#2677), pytest (#2119), qtawesome (#2617), redmine, requests (#2334),
    setuptools, setuptools (#2565), shapely (#2569), sound_lib (#2267),
    sysconfig, uniseg (#2683), urllib3, wx.rc (#2295),

    ๐Ÿ— numpy: Look for .dylib libraries, too ( (#2544), support numpy MKL builds
    (#1881, #2111)

    osgeo: Add conda specific places to check for auxiliary data (#2401)

    QT and related

    - Add hooks for PySide2
    - Eliminate run-time hook by placing files in the correct directory
    - Fix path in homebrew for searching for qmake ([#2354](
    - Repair Qt dll location ([#2403](
    - Bundle PyQT 5.7 DLLs ([#2152](
    - PyQt5: Return qml plugin path including subdirectory ([#2694](
    - Fix hooks for PyQt5.QtQuick ([#2743](
    - PyQt5.QtWebEngineWidgets: Include files needed by QWebEngine

    GKT+ and related

    - Fix Gir file path on windows.
    - Fix unnecessary file search & generation when GI's typelib is exists
    - gi: change gir search path when running from a virtualenv
    - gi: package gdk-pixbuf in osx codesign agnostic dir
    - gi: rewrite the GdkPixbuf loader cache at runtime on Linux
    - gi: support onefile mode for GdkPixbuf
    - gi: support using gdk-pixbuf-query-loaders-64 when present
    - gi: GIR files are only required on OSX
    - gio: copy the mime.cache also
    - Fix hooks for PyGObject on windows platform ([#2306](

    ๐Ÿ›  Fixed hooks: botocore (#2384), clr (#1801), gstreamer (#2417), h5py
    ๐Ÿ‘• (#2686), pylint, Tix data files (#1660), usb.core (#2088), win32com on
    ๐Ÿ non-windows-systems (#2479)

    ๐Ÿ›  Fix multiprocess spawn mode on POSIX OSs (#2322, #2505, #2759, #2795).


    โž• Add tempdir option to control where bootloader will extract files (#2221)

    ๐Ÿš€ (Windows) in releases posted on PyPI requires msvcr*.dll (#2343)

    ๐Ÿ›  Fix unsafe string manipulation, resource and memory leaks. Thanks to Vito
    Kortbeek (#2489, #2502, #2503)

    โœ‚ Remove a left-over use of getenv()

    Set proper LISTEN_PID (set by systemd) in child process (#2345)

    โž• Adds PID to bootloader log messages (#2466, #2480)

    (Windows) Use _wputenv_s() instead of SetEnvironmentVariableW()

    ๐Ÿ (Windows) Enhance error messages (#1431)

    ๐Ÿ (Windows) Add workaround for a Python 3 issue (#2496, #2844)

    (OS X): Use single process for --onedir mode (#2616, #2618)

    ๐Ÿง (GNU/Linux) Compile bootloaders with --no-lsb by default (#2369)

    ๐Ÿง (GNU/Linux) Fix: linux64 bootloader requires glibc 2.14 (#2160)

    (GNU/Linux) set_dynamic_library_path change breaks plugin library use

    ๐Ÿ— Bootloader build

    ๐Ÿ— The bootloader build was largely overhauled. In the wscript, the build no
    longer depends on the Python interpreter's bit-size, but on the compiler. We
    ๐Ÿ have a machine for building bootloaders for Windows and cross-building for
    ๐Ÿ— OS X. Thus all mainteriner are now able to build the bootloaders for all
    ๐Ÿ‘Œ supported platforms.

    โž• Add "official" build-script.

    ๐Ÿง (GNU/Linux) Make --no-lsb the default, add option --lsb.

    Largely overhauled Vagrantfile:

    • Make Darwin bootloaders build in OS X box (unused)
    • Make Windows bootloaders build using MSVC
    • Allow specifying cross-target on linux64.
    • Enable cross-building for OS X.
    • Enable cross-building for Windows (unused)

    - Add box for building osxcross.

    Largely overhauled wscript:

    • Remove options --target-cpu.
    • Use compiler's target arch, not Python's.
    • Major overhaul of the script
    • Build zlib if required, not if "on windows".
    • Remove obsolete warnings.
    • Update Solaris, AIX and HPUX support.
    • Add flags for 'strip' tool in AIX platform.

    - Don't set POSIX / SUS version defines.

    ๐Ÿง (GNU/Linux) for 64-bit arm/aarch ignore the :program:gcc flag -m64

    Module loader

    • Implement PEP-451 ModuleSpec type import system (#2377)
    • ๐Ÿ›  Fix: Import not thread-save? (#2010, #2371)

    PyInstaller Core

    โœ… Analyze: Check Python version when testing whether to rebuild.

    Analyze: Don't fail on syntax error in modules, simply ignore them.

    ๐Ÿ‘ Better error message when datas are not found. (#2308)

    ๐Ÿ— Building: OSX: Use unicode literals when creating Info.plist XML

    ๐Ÿ— Building: Don't fail if "datas" filename contain glob special characters.

    ๐Ÿ— Building: Read runtime-tmpdir from .spec-file.

    โšก๏ธ Building: Update a comment.

    ๐Ÿ— building: warn users if bincache gets corrupted. (#2614)

    ๐Ÿšš Cli-utils: Remove graceful handling of obsolete command line options.

    ๐Ÿ”ง Configure: Create new parent-dir when moving old cache-dir. (#2679)

    ๐Ÿ Depend: Include vcruntime140.dll on Windows. (#2487)

    ๐Ÿ–จ Depend: print nice error message if analyzed script has syntax error.

    ๐Ÿšš Depend: When scanning for ctypes libs remove non-basename binaries.

    โœจ Enhance run-time error message on ctypes import error.

    ๐Ÿ›  Fix #2585: py2 non-unicode sys.path been tempted by os.path.abspath().

    ๐Ÿ›  Fix crash if extension module has hidden import to ctypes. (#2492)

    ๐Ÿ›  Fix handling of obsolete command line options. (#2411)

    ๐Ÿ›  Fix breakage on Python 3.x (#2623)

    ๐Ÿ›  Fix: "Unicode-objects must be encoded before hashing" (#2124)

    Fix: UnicodeDecodeError - collect_data_files does not return filenames as
    unicode (#1604)

    โœ‚ Remove graceful handling of obsolete command line options. (#2413)

    ๐Ÿ Make grab version more polite on non-windows (#2054)

    ๐Ÿ‘‰ Make utils/win32/ round trip the version info correctly.

    ๐Ÿ‘‰ Makespec: Fix version number processing for PyCrypto. (#2476)

    ๐Ÿ”จ Optimizations and refactoring to modulegraph and scanning for ctypes

    pyinstaller should not crash when hitting an encoding error in source code

    โœ‚ Remove destination for COLLECT and EXE prior to copying it (#2701)

    โœ‚ Remove uninformative traceback when adding not found data files (#2346)

    threading bug while processing imports (#2010)

    utils/hooks: Add logging to collect_data_files.

    ๐Ÿ‘ (win32) Support using pypiwin32 or pywin32-ctypes (#2602)

    (win32) Use os.path.normpath to ensure that system libs are excluded.

    ๐Ÿ (win32) Look for libpython%.%.dll in Windows MSYS2 (#2571)

    (win32) Make round trip the version info correctly (#2599)

    (win32) Ensure that pywin32 isn't imported before check_requirements is

    (win32) pyi-grab_version and --version-file not working? (#1347)

    (win32) Close PE() object to avoid mmap memory leak (#2026)

    ๐Ÿ (win32) Fix: ProductVersion in windows version info doesn't show in some
    cases (#846)

    (win32) Fix multi-byte path bootloader import issue with python2 (#2585)

    (win32) Forward DYLD_LIBRARY_PATH through arch command. (#2035)

    (win32) Add vcruntime140.dll to_win_includes for Python 3.5 an 3.6

    (OS X) Add libpython%d.%dm.dylib to Darwin (is_darwin) PYDYLIB_NAMES.

    ๐ŸŽ (OS X) macOS bundle Info.plist should be in UTF-8 (#2615)

    ๐ŸŽ (OS X) multiprocessing spawn in python 3 does not work on macOS (#2322)

    (OS X) Pyinstaller not able to find path (@rpath) of dynamic library (#1514)


    • Align with upstream version 0.13.
    • Add the upstream test-suite
    • Warn on syntax error and unicode error. (#2430)
    • Implement enumerate_instructions() (#2720)
    • Switch byte-code analysis to use Instruction (like dis3 does) (#2423)
    • Log warning on unicode error instead of only a debug message (#2418)
    • Use standard logging for messages. (#2433)

    - Fix to reimport failed SWIG C modules (1522, #2578).

    Included 3rd-party libraries

    • Remove bundled pefile and macholib, use the releases from PyPI.
      (#1920, #2689)
    • altgraph: Update to altgraph 0.13, add upstream test-suite.


    • Display a friendly error message when utility
      fails (#859, #2792).

    โœ… Test-suite and Continuous Integration

    Rearrange requirements files.

    โšก๏ธ Pin required versions โ€“ now updated using pyup (#2745)

    Hide useless trace-backs of helper-functions.

    โž• Add a test for PyQt5.QtQuick.

    โž• Add functional tests for PySide2

    โž• Add test for new feature --runtime-tmpdir.

    ๐Ÿ›  Fix regression-test for #2492.

    โœ… unit: Add test-cases for PyiModuleGraph.

    โœ… unit/altgraph: Bringing in upstream altgraph test-suite.

    โœ… unit/modulegraph: Bringing in the modulegraph test-suite.

    Continuous Integration

    • Lots of enhancements to the CI tests to make them more stabile and
    • Pin required versions โ€“ now updated using pyup (#2745)
    • OS X is now tested along with GNU/Linux at Travis CI (#2508)
    • Travis: Use stages (#2753)
    • appveyor: Save cache on failure (#2690)
    • appveyor: Verify built bootloaders have the expected arch.

    ๐Ÿ“š Documentation

    • โž• Add information how to donate (#2755, #2772).
    • โž• Add how to install the development version using pip.
    • ๐Ÿ›  Fix installation instructions for development version. (#2761)
    • ๐Ÿ‘ Better examples for hidden imports.
    • Clarify and fix "Adding Data Files" and "Adding Binary Files". (#2482)
    • ๐Ÿ’ป Document new command line option '--runtime-tmpdir'.
    • ๐Ÿง pyinstaller works on powerpc linux, big endian arch (#2000)
    • โšก๏ธ Largely rewrite section "Building the Bootloader", update from the wiki
    • ๐Ÿ— Describe building LSB-compliant bootloader as (now) special case.
    • help2rst: Add cross-reference labels for option-headers.
    • Enable sphinx.ext.intersphinx and links to our website.
    • ๐Ÿ“š Sphinx should not "adjust" display of command line documentation (#2217)

    Known Issues

    Data-files from wheels, unzipped eggs or not ad egg at all are not included
    automatically. This can be worked around using a hook-file, but may not
    suffice when using --onefile and something like python-daemon.

    ๐Ÿ“ฆ The multipackage (MERGE) feature (#1527) is currently broken.

    ๐Ÿ‘ (OSX) Support for OpenDocument events (#1309) is broken.

    ๐Ÿ (Windows) With Python 2.7 the frozen application may not run if the
    ๐Ÿ‘‰ user-name (more specifically %TEMPDIR%) includes some Unicode
    characters. This does not happen with all Unicode characters, but only some
    โฌ†๏ธ and seems to be a windows bug. As a work-around please upgrade to Python 3
    (#2754, #2767).

    ๐Ÿ (Windows) For Python >= 3.5 targeting Windows < 10, the developer needs to
    ๐Ÿ‘€ take special care to include the Visual C++ run-time .dlls. Please see the
    ๐Ÿ section :ref:Platform-specific Notes <Platform-specific Notes - Windows>
    in the manual. (#1566)

    For Python 3.3, imports are not thread-safe (#2371#). Since Python 3.3 is
    end of live at 2017-09-29, we are not going to fix this.

  • v3.2.1 Changes

    January 15, 2017
    • ๐Ÿ†• New, updated and fixed hooks: botocore (#2094), gi (#2347), jira (#2222),
      PyQt5.QtWebEngineWidgets (#2269), skimage (#2195, 2225), sphinx (#2323,)
      xsge_gui (#2251).

    ๐Ÿ›  Fixed the following issues:

    • Don't fail if working directory already exists (#1994)
    • Avoid encoding errors in main script (#1976)
    • ๐Ÿ›  Fix hasher digest bytes not str (#2229, #2230)
    • ๐Ÿ (Windows) Fix additional dependency on the msvcrt10.dll (#1974)
    • ๐Ÿ (Windows) Correctly decode a bytes object produced by pefile (#1981)
    • ๐Ÿ (Windows) Package pefile with pyinstaller. This partially
      ๐Ÿ“ฆ undoes some changes in 3.2 in which the packaged pefiles were
      โœ‚ removed to use the pypi version instead. The pypi version was
      considerably slower in some applications, and still has a couple
      of small issues on PY3. (#1920)
    • ๐ŸŽ (OS X) PyQt5 packaging issues on MacOS (#1874)
    • (OS X) Replace run-time search path keyword (#1965)
    • (OS X) (Re-) add argv emulation for OSX, 64-bit (#2219)
    • (OS X) use decode("utf-8") to convert bytes in getImports_macholib() (#1973)
    • (Bootloader) fix segfaults (#2176)
    • ๐Ÿง ( pass option --no-lsb on GNU/Linux only (#1975)
    • ๐Ÿ“š Updates and fixes in documentation, manuals, et al. (#1986, 2002, #2153,
      #2227, #2231)
  • v3.2 Changes

    May 03, 2016
    • Even the "main" script is now byte-compiled (#1847, #1856)
    • The manual is on now (#1578)
    • On installation try to compile the bootloader if there is none for the current plattform (#1377)
    • (Unix) Use objcopy to create a valid ELF file (#1812, #1831)
    • (Linux): Compile with _FORTIFY_SOURCE (#1820)
    • ๐Ÿ†• New, updated and fixed hooks: CherryPy (#1860), Cryptography (#1425, #1861), enchant (1562), gi.repository.GdkPixbuf (#1843), gst (#1963), Lib2to3 (#1768), PyQt4, PyQt5, PySide (#1783, #1897, #1887), SciPy (#1908, #1909), sphinx (#1911, #1912), sqlalchemy (#1951), traitlets wx.lib.pubsub (#1837, #1838),
    • For windowed mode add isatty() for our dummy NullWriter (#1883)
    • Suppress "Failed to execute script" in case of SystemExit (#1869)
    • Do not apply Upx compressor for bootloader files (#1863)
    • ๐Ÿ›  Fix absolute path for lib used via ctypes (#1934)
    • (OSX) Fix binary cache on NFS (#1573, #1849)
    • ๐Ÿ (Windows) Fix message in grab_version (#1923)
    • ๐Ÿ (Windows) Fix wrong icon paramter in Windows example (#1764)
    • ๐Ÿ (Windows) Fix win32 unicode handling (#1878)
    • ๐Ÿ (Windows) Fix unnecessary rebuilds caused by rebuilding winmanifest (#1933)
    • (Cygwin) Fix finding the Python library for Cygwin 64-bit (#1307, #1810, #1811)
    • (OSX) Fix compilation issue (#1882)
    • ๐Ÿ (Windows) No longer bundle pefile, use package from for windows (#1357)
    • ๐Ÿ (Windows) Provide a more robust means of executing a Python script
    • ๐Ÿ›  AIX fixes.
    • โšก๏ธ Update waf to version 1.8.20 (#1868)
    • ๐Ÿ›  Fix excludedimports, more predictable order how hooks are applied #1651
    • Internal impovements and code clean-up (#1754, #1760, #1794, #1858, #1862, #1887, #1907, #1913)
    • โœ… Clean-ups fixes and improvements for the test suite

    Known Issues

    • ๐Ÿ Apps built with Windows 10 and Python 3.5 may not run on Windows versions earlier than 10 (#1566).
    • ๐Ÿ“ฆ The multipackage (MERGE) feature (#1527) is currently broken.
    • ๐Ÿ‘ (OSX) Support for OpenDocument events (#1309) is broken.
  • v3.1.1 Changes

    January 31, 2016
    • ๐Ÿ›  Fix problems with setuptools 19.4 (#1772, #1773, #1790, #1791)
    • 3.1 does not collect certain direct imports (#1780)
    • ๐Ÿš€ Git reports wrong version even if on unchanged release (#1778)
    • Don't resolve symlinks in (#1750, #1755)
    • ShortFileName not returned in win32 util (#1799)