* Extend analysis code so that when extension module is
encountered, it checks for the presence of an adjacent .py or
.pyi file, and if present, attempt to perform import analysis
on such accompanying source/interface file. (:issue:`9084`)
* Fix detection of setuptools-vendored modules (i.e., not
packages) in the
PyInstaller.utils.hooks.setuptools.SetuptoolsInfo hook
utility class; for example, the
setuptools/_vendor/typing_extensions.py module.
(:issue:`9102`)
* Add hook for PyQt6.QtStateMachine that was introduced in
PyQt6 v6.8.1. (:issue:`9019`)
* Fix ModuleNotFoundError for scipy when provided by Debian's
python3-scipy package. (:issue:`9069`)
* Update hook for PyGObject (gi) and associated helper code to
support changes made in PyGObject v3.52 (switch from
girepository-1.0 to girepository-2.0). (:issue:`9055`)
* On POSIX systems other than macOS, use POSIX semaphore API
instead of SysV semaphore API to synchronize onefile parent
and child process. This restores the ability to compile
bootloader under Termux, where sys/sem.h (and the SysV
semaphore API) is unavailable due to deliberate lack of
support for it in the underlying Android base.
(:issue:`9089`)
* Extend the :ref:`module_collection_mode <package collection
mode>` setting from :issue:`6945` to also apply to modules
collected into base_library.zip archive. Implement discovery
of source .py files for modules in base_library.zip at run-
time. This allows collection and discovery of source .py
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-PyInstaller?expand=0&rev=30
- Update to 6.11.1
* Add automatic binary vs. data file (re)classification step to the
analysis process.
* Add support for specifying hash randomization seed via hash_seed=<value>
run-time option when building the application.
* Allow spec files to take custom command line parameters.
* Implement pass-through for Python’s X-options via PyInstaller’s
run-time options mechanism.
* The PyInstaller.utils.hooks.collect_all() hook utility function now
attempts to translate the given importable package name into
distribution name before attempting to collect metadata.
* Removed support for building LSB-compliant bootloader, due to lack of
support for LSB (Linux Standard Base) in contemporary linux distributions.
* All of onedir build’s contents except for the executable are now moved
into a sub-directory (called _internal by default). sys._MEIPASS is
adjusted to point to this _internal directory. Assumptions that
os.path.dirname(sys.executable) == sys._MEIPASS will break.
* PyInstaller-frozen applications are not affected by the PYTHONUTF8
environment variable anymore. To permanently enable or disable the UTF8
mode, use the X utf8_mode=1 or X utf_mode=0 run-time option when
building the application.
* Remove bytecode encryption (--key and cipher options).
* Allow users to re-enable the old onedir layout (without contents
directory) by settings the --contents-directory option
* If the argcomplete Python module is installed, PyInstaller will use it
enable tab completion for its CLI tools. PyInstaller CLIs can still be
used without this optional dependency.
* Optimize the automatic binary-vs-data classification by avoiding
objdump based check on files that do not have ELF signature.
* Collect .hmac files accompanying shared libraries, if such files are
OBS-URL: https://build.opensuse.org/request/show/1228779
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-PyInstaller?expand=0&rev=28
- Update to 5.13.0
* Allow controlling the build log level (--log-level) via a
PYI_LOG_LEVEL environment variable.
* Fixes an issue with gi shared libraries not being packaged if
they don’t have version suffix and are in a special location
set by LD_LIBRARY_PATH instead of a typical library path.
* The deprecated PEP-302 find_module() and load_module() methods
have been removed from PyInstaller’s FrozenImporter.
* Compile the collected GLib schema files using glib-schema-compiler
instead of collecting the pre-compiled gschemas.compiled.
* The archive_viewer utility has been rewritten with modified
command-line interface (--log has been renamed to --list) and
with changed output formatting.
* Extend PySide6 hooks for PySide6 6.5.0 compatibility.
* Ensure that binaries that are manually specified in the .spec file
(or via corresponding --add-binary or --collect-binaries
command-line switches) undergo the binary dependency analysis,
so their dependencies are automatically collected.
* Remove the use of the TOC class in the analysis / build process,
and use plain list instances instead.
* Attempt to fix compatibility of PyInstaller’s PyiFrozenImporter
with importlib.util.LazyLoader.
* Add support for Python 3.12.
* Limit the import of collected packages prior to performing binary
dependency analysis to only Windows, where it is actually useful.
OBS-URL: https://build.opensuse.org/request/show/1098148
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-PyInstaller?expand=0&rev=26
- Update to 5.6
Features
- Add official support for Python 3.11. (Note that PyInstaller v5.5 is also expected to work but
- has only been tested with a pre-release of Python 3.11.) (#6783)
Implement a new hook utility function, collect_delvewheel_libs_directory(), intended for dealing with external shared
library in delvewheel-enabled PyPI wheels for Windows. (#7170)
Bugfix
- (macOS) Fix OpenCV (cv2) loader error in generated macOS .app bundles, caused by the relocation of package’s source .py files. (#7180)
- (Windows) Improve compatibility with scipy 1.9.2, whose Windows wheels switched to delvewheel, and therefore have shared
libraries located in external .libs directory. (#7168)
- (Windows) Limit the DLL parent path preservation behavior from #7028 to files collected from site-packages directories
(as returned by site.getsitepackages() and site.getusersitepackages()) instead of all paths in sys.path, to avoid unintended
behavior in corner cases, such as sys.path containing the drive root or user’s home directory. (#7155)
- Fix compatibility with PySide6 6.4.0, where the deprecated Qml2ImportsPath location key is not available anymore;
use the new QmlImportsPath key when it is available. (#7164)
- Prevent PyInstaller runtime hook for setuptools from attempting to override distutils with setuptools-provided
version when setuptools is collected and its version is lower than 60.0. This both mimics the unfrozen behavior and
prevents errors on versions between 50.0 and 60.0, where we do not explicitly collect setuptools._distutils. (#7172)
Incompatible Changes
- (macOS) In generated macOS .app bundles, the collected source .py files are not relocated from Contents/MacOS to Contents/Resources anymore,
to avoid issues when the path to a .py file is supposed to resolve to the same directory as adjacent binary extensions.
On the other hand, this change might result in regressions w.r.t. bundle signing and/or notarization. (#7180)
Bootloader
- (Windows) Update the bundled zlib sources to v1.2.13. (#7166)
- Update to 5.5
Features
- (Windows) Support embedding multiple icons in the executable. (#7103)
Bugfix
- (Windows) Fix a regression introduced in PyInstaller 5.4 (#6925), where incorrect copy of python3.dll
(and consequently an additional, incorrect copy of python3X.dll from the same directory) is collected when additional python
OBS-URL: https://build.opensuse.org/request/show/1031633
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-PyInstaller?expand=0&rev=20
- Update to 5.4.1
* Many changes, see upstream changelog
* Issue an error report if a .spec file will not be generated, but
command-line options specific to that functionality are given
* The `PyInstaller.utils.hooks.get_module_attribute` function now
returns the actual attribute value instead of its string representation.
* The matplotlib.backends hook no longer collects all available matplotlib
backends, but rather tries to auto-detect the used backend(s) by default.
* Drop support for Python 3.6.
* Make the error handing of `~PyInstaller.utils.hooks.collect_submodules`
configurable.
* Detect if an icon file (.ico or .icns) is of another image type but has
been mislabelled as a native icon type via its file suffix then either
normalise to a genuinely native image type if pillow is installed or
raise an error.
* Implement a mechanism for controlling the collection mode of modules and
packages, with granularity ranging from top-level packages to individual
sub-modules.
* Add support for setuptools-provided distutils, available since
setuptools >= 60.0.
OBS-URL: https://build.opensuse.org/request/show/1007199
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-PyInstaller?expand=0&rev=18
- Fix a bug since v4.6 where certain Unix system directories
were incorrectly assumed to exist and resulted in a
FileNotFoundError.
- Update sphinx hook for compatibility with latest version
(4.2.0).
- Replace use of PyRun_SimpleString with
PyRun_SimpleStringFlags.
- Add support for Python 3.10.
- Implement basic resource reader for accessing on-filesystem
resources (data files) via importlib.resources (python >=
3.9) or importlib_resources (python <= 3.8).
- Ship precompiled wheels for musl-based Linux distributions
(such as Alpine or OpenWRT) on x86_64 and aarch64.
- Fix sys.executable pointing to the external package file
instead of the executable when in package side-load mode
(pkg_append=False).
- Fix a runaway glob which caused
ctypes.util.find_library("libfoo") to non-deterministically
pick any library matching libfoo* to bundle instead of
libfoo.so.
- Fix compatibility with with MIPS and loongarch64
architectures.
- Fix the FrozenImporter.get_source() to correctly handle the
packages’ __init__.py source files. This in turn fixes
missing-source-file errors for packages that use pytorch JIT
when the source .py files are collected and available (for
example, kornia).
- Fix the location of the generated stand-alone pkg file when
using the side-load mode (pkg_append=False) in combination
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-PyInstaller?expand=0&rev=17