* **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)
- 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).
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.