PyInstaller v3.3 Release Notes

Release Date: 2017-09-21 // over 6 years ago

    โž• 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
    this.

    ๐Ÿ“ฆ 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).

    Hooks

    ๐Ÿ†• 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),
    google.cloud, google.cloud.storage, 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](https://github.com/pyinstaller/pyinstaller/pull/2354))
    - Repair Qt dll location ([#2403](https://github.com/pyinstaller/pyinstaller/pull/2403))
    - Bundle PyQT 5.7 DLLs ([#2152](https://github.com/pyinstaller/pyinstaller/issues/2152))
    - PyQt5: Return qml plugin path including subdirectory ([#2694](https://github.com/pyinstaller/pyinstaller/issues/2694))
    - Fix hooks for PyQt5.QtQuick ([#2743](https://github.com/pyinstaller/pyinstaller/pull/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](https://github.com/pyinstaller/pyinstaller/pull/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).

    Bootloader

    โž• 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
    http://bugs.python.org/issue29778 (#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
    (#625)

    ๐Ÿ— 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
    (#2801).

    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.
    (#2314)

    ๐Ÿ— 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().
    (#2585)

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

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

    ๐Ÿ›  Fix versioninfo.py 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/versioninfo.py round trip the version info correctly.

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

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

    pyinstaller should not crash when hitting an encoding error in source code
    (#2212)

    โœ‚ 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 versioninfo.py round trip the version info correctly (#2599)

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

    (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
    (#2487)

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

    ๐ŸŽ (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)

    Modulegraph

    • 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.

    Utilities

    • :program:grab_version.py: 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
      reliable.
    • 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
      page.
    • ๐Ÿ— 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.