-
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 bypython.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) -
(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) -
(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
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
Utilities
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.
- Lots of enhancements to the CI tests to make them more stabile and
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 likepython-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.