cx_Freeze Changelog

What's new in cx_Freeze 6.15.14

Feb 5, 2024
  • tests: add tests for __main__ and cli (#2219)
  • winversioninfo: comments length must be limited to fit WORD (#2220)

New in cx_Freeze 6.15.12 (Dec 18, 2023)

  • Replace SetDllDirectory by AddDllDirectory
  • Build(deps): bump actions/setup-python from 4 to 5 [pre-commit.ci]
  • Pre-commit autoupdatebuild(deps): bump github/codeql-action from 2 to 3
  • Build(deps): bump actions/upload-artifact from 3 to 4
  • Build(deps): bump actions/download-artifact from 3 to 4
  • Build: fix build_wheel (after #2162 and #2163)
  • Hooks: add AV and PyAV

New in cx_Freeze 6.15.5 (Aug 1, 2023)

  • Samples: update samples using wxPython
  • Hooks: update sysconfig hook
  • Startup: get rid of sysconfig at startup

New in cx_Freeze 6.15.4 (Aug 1, 2023)

  • hooks: move sklearn hook to a submodule
  • hooks: add boto3
  • hooks: fix the sentry_sdk hook

New in cx_Freeze 6.15.0 (May 23, 2023)

  • Breaking change: remove camelCase in Executable api
  • New hooks: lazy_loader, librosa, jpype, pyimagej, pyreadstat
  • Improved hooks: matplotlib, pytorch, PyQt6, PySide6, TkInter
  • Bug fixes and improvements

New in cx_Freeze 6.14.9 (Apr 9, 2023)

  • fix: setuptools is unbundled on Gentoo
  • hooks: numpy can be used in conda-forge without mkl [windows] (#1867)

New in cx_Freeze 6.14.8 (Apr 3, 2023)

  • Bugfix release.

New in cx_Freeze 6.14.7 (Mar 27, 2023)

  • Bugfix release

New in cx_Freeze 6.14.0 (Feb 19, 2023)

  • New or improved hooks for:
  • hooks: Add charset_normalizer (:pull:`1758`)
  • hooks: Add shapely (:pull:`1725`)
  • hooks: Add sklearn hook (:pull:`1715`)
  • hooks: Add pytorch (:pull:`1720`)
  • hooks: Update scipy hook (:pull:`1716`)
  • hooks: fix sqlite3 hook in python embed (:pull:`1707`)
  • Windows:
  • startup: Do not limit PATH (revert #1659 partially), limit dll search path (:pull:`1675`)
  • Ignore pylint error for deprecated module msilib (:pull:`1682`)
  • Update to cx_Logging 3.1 and remove hacks for previous version (:pull:`1688`)
  • [windows] Compile base executables with generic names depending on cache_tag (:pull:`1712`)
  • [windows] build-wheel: maintain base executables on git (:pull:`1713`)
  • [windows] build-wheel: fix git rm (use --ignore-unmatch instead) (:pull:`1714`)
  • [windows] build-wheel: fix git branch (:pull:`1717`)
  • [windows] setup: optional compilation in editable mode (:pull:`1718`)
  • Documentation:
  • pin sphinx to 5.3.0 (:pull:`1691`)
  • docs: fix typo (:pull:`1697`)
  • doc: Add keywords for setup() and reorganize read order (:pull:`1728`)
  • Update copyright year (:pull:`1749`)
  • docs: use 'furo' theme for sphinx (:pull:`1750`)
  • doc: cleanup after use of furo theme (:pull:`1755`)
  • doc: improve documentation about setup script (:pull:`1756`)
  • project and doc: tweak formatting and ordering (:pull:`1762`)
  • Small fixes in code and documentation (:pull:`1738`)
  • Improvements/Refactor/Bugfix:
  • Include copy of cx_Freeze license with frozen applications (:pull:`1672`)
  • license: move update_frozen_license to a pre-commit (:pull:`1676`)
  • Move OS constants to _compat module (:pull:`1709`)
  • install: run() method needs to exist (:pull:`1747`)
  • Fix the subclassing of internal commands (regression introduced in #1746) (:pull:`1759`)
  • commands: accepts space-delimited string lists (:pull:`1761`)
  • Project:
  • Support Python 3.11 and set it as default in CI (:pull:`1681`)
  • Drop python 3.6 (:pull:`1670`)
  • Drop the external dependency on importlib-metadata (:pull:`1692`)
  • Drop the external dependency on packaging (:pull:`1730`)
  • Python type hints - upgrade syntax (:pull:`1703`)
  • Cleanup (:pull:`1760`)
  • setup: move metadata to pyproject.toml (setuptools 61+) (:pull:`1677`)
  • pre-commit: fix files that trigger the hook (:pull:`1690`)
  • Update pre-commit dependencies (:pull:`1693`)
  • update dev dependencies (:pull:`1701`)
  • project: add/fix urls (:pull:`1708`)
  • build-wheel: add missing sdist files (:pull:`1711`)
  • dist: Use another aproach to export DistributionMetadata (:pull:`1726`)
  • build: setuptools has 'build' command since v62.4.0 (:pull:`1729`)
  • dist: Use setuptools plugins to extend Distribution instead of subclassing (:pull:`1733`)
  • Use setuptools Distribution directly (:pull:`1736`)
  • Add build_exe as subcommand of setuptools build (plugin) (:pull:`1737`)
  • Add/update commands (provisional) and minor tweaks (:pull:`1746`)
  • Add dependabot (:pull:`1752`)
  • Declare support for setuptools 66.0 (:pull:`1753`)
  • Ignore build time error (:pull:`1754`)
  • Samples:
  • samples: Add simple samples using pyproject.toml and setup.cfg (:pull:`1757`)

New in cx_Freeze 6.13.0 (Oct 26, 2022)

  • New or improved hooks for:
  • hooks: Add hooks for PyQt6 (6.3.1 and 6.4.0) (PR #1664)
  • hooks: support for new pyside6 6.4.0 (PR #1642)
  • hooks: support for PySide6 6.4.0 on MSYS2 (PR #1655)
  • Windows:
  • Fix the filename of .msi file generated by bdist_msi. (PR #1591)
  • Improvements related to bdist_msi –target_name (PR #1648)
  • initscripts: Separate the code needed by windows and mingw and fix the path usage. (PR #1652)
  • Fix missing dlls in build root directory [mingw] (PR #1653)
  • Ensure python3.dll is loaded in some python versions (bpo-29778) (PR #1657)
  • Fix dependency target to work better with MSYS2 (PR #1658)
  • startup: limit the PATH in all windows environments (PR #1659)
  • setup: Fix python compatibility, especially on Windows (PR #1656)
  • parser: lief >= 0.12 is required [windows] (PR #1661)
  • Samples:
  • samples: fix demo scripts for pythonnet 3 (PR #1643)
  • samples: Add samples for PyQt6 and add readme to some qt samples (PR #1663)
  • Improvements/Refactor/Bugfix:
  • Refactor ci/requirements.py (PR #1644)
  • tests: add mores tests for bdist_msi (PR #1646)
  • Do not translate newlines (generate identical file across OS) (PR #1645)
  • Fix warning and test docs. (PR #1647)
  • Monkey patch setuptools sandbox to get a better run_setup (PR #1649)
  • tests: cleanup files and directories created (PR #1650)
  • use os.fspath() instead of str() (PR #1660)

New in cx_Freeze 6.12.0 (Oct 13, 2022)

  • Improve tkinter hook to work on all OS
  • Improved PyQt5/Pyside2 hooks and new hook for PySide6
  • Linux binary wheels for arm64 (aarch64)
  • Bug fixes and improvements

New in cx_Freeze 6.11.1 (Jun 22, 2022)

  • Main Improvements:
  • First step to support static libpython (:pull:`1414`)
  • Set the path to search for modules, and fix the path for built-in modules (:pull:`1419`)
  • Support for using embedded manylinux static libraries (:pull:`1504`)
  • Support for using macos static libraries (:pull:`1505`)
  • New release process relies on bump2version (:pull:`1365`)
  • Improve code to cache dist-info files and convert egg-info to dist-info (:pull:`1367`)
  • Compile base executables with generic names depending on SOABI (:pull:`1393`)
  • Add CI with a pre-commit file (:pull:`1368`)
  • Introduce tests in the GitHub CI (:pull:`1381`)
  • Get rid of some calls to deprecated module distutils (:pull:`1445`)
  • Borrow bdist_rpm from python 3.10 (:pull:`1446`)
  • Borrow bdist_msi from python 3.8 (:pull:`1447`)
  • pin setuptools to a range that works (:pull:`1453`)
  • Windows:
  • Convert PEP440 version scheme to windows scheme (:pull:`1392`)
  • Lief 0.12 supports delay_imports (:pull:`1426`)
  • LIEF 0.12 supports Python 3.10 (:pull:`1433`)
  • New or improved hooks for:
  • Added additional hooks for the Qt sqldrivers and styles plugins. (:pull:`1371`)
  • Fix hooks for PySide2 5.15.2.1 (:pull:`1396`)
  • Optimizing and adding some Qt hooks (:pull:`1398`)
  • Use pathlib in qt hooks to always use posix paths as qt does (:pull:`1399`)
  • Add hooks for Pyside2.QtWebEngine* (and pyqtwebengine) (:pull:`1479`)
  • Samples:
  • Add PySide6 sample (:pull:`1442`)
  • Use pyside2 example simplebrowser as sample (:pull:`1478`)
  • Improvements/Refactor/Bugfix:
  • Minor tweaks with black (:pull:`1364`)
  • Run isort over the code base (:pull:`1366`)
  • Fixes some errors found by pylint (:pull:`1369`)
  • Fix requirements (:pull:`1373`)
  • Build in isolated mode for python 3.6-3.9 (:pull:`1374`)
  • Fix pre-commit configuration (:pull:`1375`)
  • Skip isort in imports_sample test to fix errors (:pull:`1383`)
  • Update MANIFEST.in and Makefile (:pull:`1391`)
  • Fix the default module name in IncludeFile (:pull:`1400`)
  • pin sphinx to 4.4.0 and fix the support for it (:pull:`1401`)
  • Fix some requirements and versions (:pull:`1402`)
  • Use blacken-docs for python code blocks in the docs (:pull:`1403`)
  • Fix a test after #1402 (:pull:`1404`)
  • Use sphinx rdt theme and minor tweaks (:pull:`1405`)
  • Use new build option in rdt to use py39 (:pull:`1406`)
  • Add pre-commit-sphinx (:pull:`1407`)
  • Add pip-tools pre-commit and enable setup-cfg-fmt (:pull:`1411`)
  • Use Path in setup (:pull:`1412`)
  • Use a self made requirements sync instead of piptools (:pull:`1413`)
  • Add cached_property (and a compatible function) for planned use (:pull:`1417`)
  • readme: To install the latest development build (:pull:`1418`)
  • finder: refactor load_module (:pull:`1420`)
  • The built-in modules are determined based on the cx_Freeze build (:pull:`1421`)
  • Some changes to satisfy the linters (:pull:`1422`)
  • Enable flake8 in pre-commit (:pull:`1423`)
  • Enable flake8 in samples (:pull:`1427`)
  • Bump black from 22.1.0 to 22.3.0 (:pull:`1428`)
  • Enable flake8 in tests (:pull:`1429`)
  • Enable pylint (limited to tests) (:pull:`1430`)
  • Update python dependencies (:pull:`1432`)
  • freezer: refactor to 'consider using with' (:pull:`1434`)
  • finder: use pep8 names (and enable pylint for it) (:pull:`1435`)
  • hooks: fixes docstrings and other lint warnings (:pull:`1436`)
  • hooks: new utility function copy_qt_data (:pull:`1437`)
  • hooks: use function attribute to avoid a pylint warning (:pull:`1438`)
  • hooks and setup are ready to pylint (:pull:`1439`)
  • More configuration to pylint (:pull:`1440`)
  • Fix the main docstring for some modules (:pull:`1441`)
  • Two more modules are ready for pylint. (:pull:`1443`)
  • Add cli and dist as pylint-ready modules (:pull:`1444`)
  • bdist_rpm: Make code style suitable for use in cx_Freeze (:pull:`1448`)
  • bdist_rpm: merge the code to make a unique class (:pull:`1449`)
  • bdist_msi: convert to utf8, apply pyupgrade, black and isort (:pull:`1452`)
  • Declare the new subpackage cx_Freeze.command (:pull:`1451`)
  • bdist_msi: get rid of distutils (:pull:`1454`)
  • bdist_msi: Pass pylint and flake8 (:pull:`1455`)
  • initscripts: pylint ready (:pull:`1456`)
  • bdist_rpm: condicional import (:pull:`1457`)
  • bdist_msi: move all the code to the command subpackage (:pull:`1458`)
  • Document the new code layout (:pull:`1459`)
  • Fix pylint configuration (:pull:`1460`)
  • bdist_mac: move macdist to new name and fix lint errors (:pull:`1461`)
  • bdist_*: fix some pylint invalid-name (:pull:`1462`)
  • Tests: enable a test by platform (:pull:`1463`)
  • build,install: move these commands to the command subpackage (:pull:`1464`)
  • build_exe: move this command to the command subpackage (:pull:`1465`)
  • install_exe: move this command to the command subpackage (:pull:`1466`)
  • install: suppress known deprecation (:pull:`1467`)
  • build: merge the code from distutils to the Build class (:pull:`1468`)
  • The python used to compile and to build is always the same [conda] (:pull:`1469`)
  • build: minor tweaks (:pull:`1471`)
  • pre-commit autoupdate and minor tweaks with pylint (:pull:`1472`)
  • Move setup() and refactor to avoid a future circular import in Freezer (:pull:`1473`)
  • setup: more pylint (:pull:`1474`)
  • Using a trick to get around a dependency on distutils. (:pull:`1475`)
  • CI in one file and cache pip dependencies (:pull:`1476`)
  • tests: Add test for build command (:pull:`1477`)
  • build_exe: fix a bug in the build_exe option (:pull:`1480`)
  • bdist_msi: move user_options to main code, excluding unused options (:pull:`1481`)
  • tests: add find_spec test (and remove similar sample) (:pull:`1482`)
  • Extend setuptools.sandbox.run_setup to work with cx_Freeze setup(). (:pull:`1484`)
  • tests: support for tests using Path (:pull:`1485`)
  • tests: add plist_items test (and remove similar sample) (:pull:`1486`)
  • tests: remove a no longer suppported method (:pull:`1487`)
  • tests: add a test for bdist_rpm (:pull:`1488`)
  • pre-commit: fix pyupgrade configuration (:pull:`1489`)
  • doc: Enable text wrapping in table cells using rdt_theme (:pull:`1496`)
  • Update issue templates (:pull:`1507`)
  • update dev dependencies (:pull:`1508`)

New in cx_Freeze 6.11 (Jun 5, 2022)

  • Binary wheels for manylinux and macOS (including Apple Silicon)
  • Complete integration to use setuptools instead of distutils
  • More code modernization
  • Bug fixes and improvements

New in cx_Freeze 6.9 (Dec 8, 2021)

  • Support for pathlib.Path
  • New or improved hooks, with emphasis on matplotlib, numpy, PyQt5 and PySide2
  • New ModuleFinder engine uses importlib.machinery
  • Refactored Freezer
  • New support for package metadata improving Module and new DitributionCache
  • Enhanced support for Python 3.8 and Python 3.9, including MSYS2 and Anaconda distributions
  • Improvements for multiprocessing
  • Optimizations in detection and distribution of libraries
  • Integrated to setuptools and importlib-metadata
  • Code modernization
  • Various bug fixes.

New in cx_Freeze 6.8 (Sep 7, 2021)

  • Improvements:
  • Support pathlib in ModuleFinder (PR #1153)
  • Use Path in Module.file (PR #1158)
  • Use Path in _replace_paths_in_code (PR #1159)
  • Use Path in Module.path (PR #1160)
  • Convert code in hooks to use Path (PR #1161)
  • Use path.iterdir to simplify a code block (PR #1162)
  • Use Path in executable module (PR #1163)
  • Use Path in ModuleFinder.zip_includes (PR #1164)
  • Use Path in process_path_specs (PR #1167)
  • Use Path in Freezer include_files and zip_includes (PR #1168)
  • Use Path in Freezer.targetdir and some related code (PR #1169)
  • Use Path in Freezer._copy_file and almost remaining related code (PR #1172)
  • Use Path in Executable icon and shortcut_dir (PR #1173)
  • Use Set[Path] in dependent_files (PR #1215)
  • Use subprocess (PR #1214)
  • Add more options to cxfreeze script and tweak the docs (PR #1174)
  • Refactor and bugfix for all systems:
  • Remove unused and unnecessary code (PR #1142)
  • Add some old modules to exclude list (PR #1149)
  • Fix a last minute change and tweak docstrings (PR #1154)
  • Include files (from a directory) is ignoring the exclude dependencies option (PR #1216)
  • Add more typing to freeze (PR #1218)
  • Create permanent cx_Freeze/bases (PR #1227)
  • Make Freezer.targetdir a property to improve a bit (PR #1170)
  • Code analysis, pep8, f-string (PR #1177)
  • Complementary fixes (PR #1179)
  • Use setuptools instead distutils a bit more (PR #1195)
  • Fix compatibility with msys2 python 3.9.6 (PR #1182)
  • LLVM dlltool only supports generating an import library (PR #1187)
  • Normalize paths at startup for MSYS2 python (PR #1193)
  • Disable delay load to avoid ‘Segmentation fault’ in mingw 32 bits (PR #1217)
  • Support Path as parameter for some functions in C (PR #1225)
  • Add a stub interface for util module (PR #1226)
  • Recursing into directories to search for load order files (PR #1200)
  • Fix program files folder for msi using mingw and some tweaks (PR #1236)
  • New or improved hooks for:
  • _cffi_backend (cffi) (PR #1150)
  • googleapiclient (PR #1151, Issue #1147)
  • PyQt5 hooks (PR #1148, PR #1155, PR #1156, Issue #631, Issue #846, Issue #972, Issue #1119)
  • PySide2 (PR #1183)
  • tzdata, zoneinfo and backports.zoneinfo (PR #1198, PR #1204, PR #1208)
  • pyzmq (PR #1199)
  • numpy+mkl in conda (PR #1205)
  • Samples:
  • Fix code of some samples (PR #1145)
  • Remove outdated sample (PR #1157)
  • Improve sample to support pyzmq < 20 and timeout (PR #1190)
  • Tweak pyqt5 and pyside2 samples (PR #1180)
  • Improve PyQt5 and PySide2 samples (PR #1192)
  • Documentation:
  • Make distutils help and documentation more in line with cxfreeze script (PR #1175)
  • Update distutils build_exe help in docs (PR #1176)
  • Remove distutils references in main docs (PR #1196)
  • Better explain the miniconda installation (PR #1209)
  • Minor updates to docs (PR #1230)

New in cx_Freeze 6.7 (Jul 9, 2021)

  • Improvements, refactor and bugfix for all systems:
  • Implemented multi levels for build_exe silent option (:pull:`883`)
  • Corrected silent_level to default to 0 (to agree with documentation) (:pull:`1046`)
  • Split up Freezer object (:pull:`1035`)
  • Ignores nonexistent files in dist-info (:pull:`1038`, :issue:`1034`)
  • Use setuptools build_ext to compile base executables and with names that dependes on python version and platform (:pull:`1054`)
  • Use sysconfig and others instead of some distutils modules (:pull:`1055`)
  • Handle the pre-copy task with the _pre_copy_hook method in the freezer (:pull:`1069`)
  • New method to handle platform dependent resources in the freezer (:pull:`1070`)
  • Minor tweaks to tidy up the code (:pull:`1079`)
  • Use wchar if possible. (:pull:`1080`)
  • Create cx_Freeze/bases if it doesn't exist (:pull:`1082`)
  • Use option blocks in the docs and add command line help from commands (:pull:`1097`)
  • Use a valid example in docs (:pull:`1098`)
  • Cleanup versionchanged; limit to 6.0+ (:pull:`1099`)
  • Improve the text of build_exe bin_* (:pull:`1100`)
  • Use of some Sphinx features to organize a bit (:pull:`1102`, :pull:`1138`, :pull:`1139`)
  • Implement Freeze._default_bin_path_includes for all platforms (:pull:`1108`)
  • Move some code to startup to unify the use of environ (:pull:`1112`)
  • Small changes to resolve code warnings (:pull:`1122`)
  • New method Module.update_distribution to update the cached distribution for the frozen executable (:pull:`1123`)
  • Implement DistributionCache.from_name (:pull:`1135`)
  • Use of black and pyupgrade (:pull:`1056`, :pull:`1085`, :pull:`1086`, :pull:`1086`, :pull:`1057`)
  • Use pep8 names in private functions in freezer (:pull:`1068`)
  • Linux:
  • Fix the support for unix-like systems (:pull:`1067`, :issue:`1061`)
  • check in advance whether the dependency should be copied to avoid changing the rpath unnecessarily. (:pull:`1091`, :issue:`1048`)
  • Fix issue with strip in bdist_rpm (:pull:`1092`, :issue:`1048`)
  • Improve installation docs for linux (:pull:`1095`)
  • Fix a buffer overflow introduced in :pull:`872` (:pull:`1047`)
  • Fix another flaw introduced in :pull:`872` (:pull:`1111`)
  • Fix regression introduced in :pull:`995` (and (:pull:`985`)) (:pull:`1090`, :issue:`1029`)
  • macOS:
  • Added CFBundlePackageType and NSHighResolutionCapable by default to Info.plist of Darwin bundles (:pull:`1031`, :issue:`239`)
  • Windows:
  • Transform filename to msilib.Binary for binary data (:pull:`1024`, :issue:`1019`)
  • Add extension registration on Windows (:pull:`1032`)
  • Support for icons with non-ascii names (:pull:`1066`)
  • New C function to update the PE checksum (or fix it in case it is zero) (:pull:`1071`, :issue:`315`, :issue:`1059`)
  • Use setuptools command to install a include file (:pull:`1072`)
  • Fix the support for non-ascii names in windows (:pull:`1077`, :issue:`835`)
  • PyEval_InitThreads is unecessary in py37+ and is deprecated in py39 (:pull:`1081`)
  • Set working directory in the Desktop shortcut (:pull:`1083`, :issue:`48`, :issue:`623`)
  • Improve documentation about bdist_msi (:pull:`1084`, :issue:`48`)
  • New or improved hooks for:
  • pydantic (:pull:`1074`, :issue:`1052`)
  • scikit-image (skimage) (:pull:`1104`, :issue:`1101`)
  • plotly (:pull:`1105`, :issue:`1101`)
  • scipy (versions 1.6.3 to 1.7.0) (:pull:`1106`, :pull:`1134`, :issue:`1101`, :issue:`1129`)
  • numpy and numpy+mkl (versions 1.19.5 to 1.21.0) (:pull:`1113`, :pull:`1125`, :issue:`739`, :issue:`1110`)
  • six (:pull:`1115`)
  • hdfdict, h5py_wrapper and pytest-runner (:pull:`1116`, :pull:`1124`, :issue:`1118`)
  • Samples:
  • pydantic (:pull:`1074`)
  • pythonnet-demo (python.NET sample based on it's demo) (:pull:`1088`, :issue:`1049`)

New in cx_Freeze 6.6 (Apr 14, 2021)

  • Improvements:
  • Enable python -m cx_Freeze syntax (PR #899)
  • Standardize InitializePython on all platforms. (PR #872)
  • Store a copy of cached dist-info (PR #958)
  • Suppress additional output if –silent has been set. (PR #830)
  • Only copy a file if should copy a file (PR #995, Issue #256)
  • Refactor cache dist-info files to be extended (PR #957)
  • Remove subfolders belonging to excluded modules (PR #922)
  • Windows:
  • Avoid duplicates of libpythonXX.so and pythonXX.ddl (PR #978)
  • Rebirth of –include-msvcr - real support for vcruntime dlls [windows] (PR #973, Issue #367)
  • Set lib directory as default for dll search [windows] (PR #1000)
  • Speedup compiling on windows (PR #993)
  • Support for delay load [mingw] (PR #1002)
  • Support for delay load [windows] (PR #1001)
  • Update to cx_Logging 3.0 (PR #909, PR #994, PR #996, PR #998, PR #1012)
  • Use the delay load to compile Win32Service (PR #1003)
  • New or improved hooks for:
  • llvmlite (PR #1016)
  • matplotlib (PR #971)
  • mkl-service (PR #975)
  • numpy (PR #970, PR #968)
  • pandas (PR #969)
  • pycountry (PR #956)
  • pyodbc (PR #1018)
  • pyqtgraph (PR #1015)
  • pyzmq 22 (PR #953)
  • Samples:
  • Add sample for pycountry (PR #955)
  • Add sample for pyzmq (PR #954)
  • Update the service sample and build (PR #886)
  • Update PySide2 sample (PR #1011)
  • Tweak samples (PR #888)
  • Bugfixes:
  • Force encoding of generated files to utf-8 (PR #1005, Issue #989)
  • cx_Logging as submodule (PR #874, Issue #866)
  • Avoid the __main__ module from pip wheel (PR #894, Issue #891)
  • Fix regression introduced in PR #857 (PR #878, Issue #875)
  • Fix typo (PR #877, Issue #866)
  • Fix the pillow sample (PR #876)
  • Fix the docs (PR #870)
  • Fix regression introduced in #978 (PR #1010)
  • Standardizes the target directory Freezer (and cxfreeze`) (PR #999)
  • Fix regression introduced in PR #973 (PR #976)
  • Fix PATH for anaconda/miniconda (PR #974)
  • Starts freezing in a clean directory (PR #965)
  • Fix a regression introduced in #798 (PR #945, Issue #932)
  • fix regressions introduced in #843 (PR #920, Issue #919)
  • Some packages use a directory with vendored modules (PR #906, Issue #900)
  • IncludeModule has priority over ExcludeModule (PR #904)
  • Better error checks (PR #902)
  • Support for executable names that may not be valid identifiers (PR #889, Issue #884)
  • Accept file without extension as source file to be backwards compatible (PR #893)
  • Refactor:
  • Update readme (PR #1022)
  • Update installation docs (PR #1021)
  • Modify cxfreeze script a bit (PR #1009)
  • Reestructure ConstantModule (PR #1004)
  • Invert the assignment to create a new list (PR #987)
  • Refactor Freezer init (PR #985)
  • New module exception (PR #984)
  • Separates the freezer module classes (PR #983)
  • Update code style in Modules (PR #982)
  • build docs in build dir at project’s root (PR #981)
  • Minor update to code style (PR #980)
  • update faq a bit (PR #977)
  • Cleanup freezer copy file method (PR #964)
  • Typo (PR #962)
  • Change detection order and tweak formatting (PR #961)
  • Refactor Module class attributes (PR #960)
  • Fade to black (PR #946, PR #1020)
  • Distribute samples only with source code (PR #941)
  • Add badges (PR #944)
  • Revise docs a bit (PR #943)
  • Update in the docs the use of main branch (PR #942)
  • remove unused files (PR #910)
  • Update build-wheel (PR #903)
  • Revert previous commit and fix the ident only (PR #882)
  • Fix potential errors (PR #881)
  • Code analysis (PR #880)

New in cx_Freeze 6.5 (Jan 4, 2021)

  • Improvements:
  • Refactor ModuleFinder to use importlib.machinery (PR #811)
  • Executable target_name now has support for names with version (PR #857)
  • The name of the target executable can be modified after the build (PR #858, Issue #703)
  • Use codeType.replace when in py38+ (optimized) (PR #836)
  • Use a configuration file for Read the Docs (PR #818)
  • Modernize code (Type annotation, PEP8, black, refactor) (PR #815, PR #832, PR #837, PR #838, PR #839, PR #840, PR #841, PR #842, PR #843, PR #859, PR #860, PR #861, PR #864, PR #865, PR #868)
  • Windows:
  • Check if icon is valid (Issue #856, PR #851, Issue #824, Issue #379)
  • Warning about python from Windows Store (PR #867, Issue #856)
  • macOS:
  • Implemented a “plist_items” option on bdist_mac command (PR #827)
  • Remove deprecated methods in macdist (PR #810)
  • Fix a regression for macOS (PR #816, Issue #809)
  • Fix a bug using macOS on Github Actions (PR #812)
  • Marked rpath-lib-folder option as depreciated. (PR #834)
  • New or improved hooks for:
  • cryptography (PR #817, Issue #814)
  • google.cloud.storage (PR #821)
  • matplotlib (PR #807, Issue #805)
  • pygments (PR #863, Issue #862)
  • zoneinfo/tzdata (and backports.zoneinfo) (PR #854)
  • Samples:
  • Better pytz sample (PR #852)
  • Sample for new library zoneinfo (py39) (PR #853)
  • Sample to demonstrate the use a valid and an invalid icon (PR #850)
  • Bugfixes:
  • cx_Freeze.__version__ should be the package version (PR #806, Issue #804)
  • pin importlib_metadata to >=3.1.1 (PR #819, PR #820, PR #822)
  • Correct test failures when initializing ModuleFinder (PR #833)

New in cx_Freeze 6.4 (Nov 22, 2020)

  • Improvements:
  • Improved the resolution of dependencies in darwin MachO files (PR #590)
  • Documentation (PR #783, PR #796`)
  • Release using GitHub Actions CI/CD workflows (PR #797)
  • Modernize code (Type annotation, PEP8, pyupgrade, black, refactor, cleanup) (PR #785, PR #776, PR #314, PR #787, PR #784, PR #786, PR #788, PR #789, PR #793, PR #794, PR #780, PR #795, PR #799, PR #800, PR #801, PR #790, PR #798)
  • New or improved hooks for:
  • PyQt5 (PR #718, PR #791)
  • Samples:
  • Added a sample to illustrate problem with importlib.util.find_spec (PR #735)
  • Sample for bdist_msi, summary_data option (PR #775)
  • README for some samples; remove requirements.txt to avoid to be interpreted by some sites as the requirements of cx_Freeze (PR #802)
  • Bugfixes:
  • Cause MSI file to be released at the end of bdist_msi command. (PR #781)

New in cx_Freeze 6.3 (Oct 20, 2020)

  • Initial support for metadata to use by pkg_resources and importlib.metadata
  • Namespace packages are automatically detected
  • Enhanced support for Python 3.8
  • Better support for MSYS2
  • More integrated to setuptools
  • Fixed long-awaited bugs and recent bugs
  • Fixed issues with multiprocessing (see Windows section of 6.2)

New in cx_Freeze 6.2 (Oct 9, 2020)

  • New or improved hooks for:
  • aiofiles (PR #600)
  • babel (PR #577)
  • bcrypt (PR #583, Issue #581)
  • certifi (PR #690)
  • cffi.cparser (PR #603)
  • ctypes (for MSYS2 mingw) (PR #565)
  • matplotlib (PR #574, Issue #569)
  • pikepdf (PR #604)
  • lxml (PR #604)
  • pycryptodome (PR #602)
  • pygments (PR #604)
  • pkg_resources (PR #584, Issue #579)
  • pytest (PR #617)
  • setuptools (PR #608)
  • uvloop (PR #689)
  • Fixed multiprocessing pickling errors (PR #622, Issue #539, Issue #402, Issue #403, Issue #231, Issue #536)
  • Ensure the copy of default python libraries (PR #640)
  • Replace deprecated functions that will be removed in py4 - win32gui (PR #649)
  • Exclude Tkinter from loaded modules (PR #576, Issue #567)
  • Fixed “no module named ‘scipy.spatial.cKDTree’” (PR #626, Issue #233)
  • Fixed “no module named ‘multiprocessing.pool’” (PR #627, Issue #353)
  • Download cx_Logging to build Win32Service.exe when building from sources (PR #650, Issue #519)

New in cx_Freeze 6.1 (Apr 26, 2020)

  • Added support for Python 3.8 (PR #545, PR #556).
  • Added support for python setup.py develop (PR #502).
  • Use console_scripts in entry_points so that the commands cxfreeze and cxfreeze-quickstart run on Windows without the need for running a postinstall script (PR #511).
  • Added support for switching from per-user to per-machine installations on Windows (PR #507).
  • Fix installation if AlwaysInstallElevated policy is set on Windows (PR #533).
  • Updated default dependencies for Python 3 on Windows (PR #505).
  • Removed unused code (PR #549).
  • The default dependencies are now always copied into the lib folder instead of into the directory where the executable resides on Linux (PR #518).
  • Dependent files are now copied to the same relative directory as their location in the source on Linux (PR #494).
  • Added tests for commonly used packages like cryptography, pillow, sqlite, pytz, ctypes and distutils (PR #508, PR #537, PR #546, PR #555, PR #557).
  • Fix regression with DLL dependencies introduced in 6.0 by PR #492 due to case differences (PR #512).
  • Fix regression with dependent files introduced in 6.0 by PR #297 for platforms other than macOS (PR #516).
  • The version of cx_Freeze is now defined in one place (PR #552).
  • Eliminate exclusion of gestalt module on platforms other than macOS since it exists outside of macOS.
  • Improved hooks for sqlite3 (PR #509), cryptography, and tkinter (PR #559).
  • Added hook for pytz (PR #554).
  • Improved hook infrastructure, permitting hooks to add constants that can be examined at runtime, determine whether a module is going to be stored in the file system and include files in the zip file.
  • Improved documentation (PR #510).

New in cx_Freeze 4.2.3 (Oct 11, 2011)

  • Added support for Python 3.2.
  • Added hook for datetime module which implicitly imports the time module.
  • Fixed hook for tkinter in Python 3.x.
  • Always include the zlib module since the zipimport module requires it,
  • even when compression is not taking place.
  • Added sample for a tkinter application.

New in cx_Freeze 4.2.2 (Oct 11, 2011)

  • Added support for namespace packages which are loaded implicitly upon
  • startup by injection into sys.modules.
  • Added support for a Zope sample which makes use of namespace packages.
  • Use the Microsoft compiler on Windows for Python 2.6 and up as some
  • strange behaviors were identified with Python 2.7 when compiled using
  • mingw32.
  • Eliminate warning about -mwindows when using the Microsoft compiler for
  • building the Win32GUI base executable.
  • Added support for creating version resources on Windows.
  • Ensure that modules that are not truly required for bootstrapping are not
  • included in the frozen modules compiled in to the executable; otherwise,
  • some packages and modules (such as the logging packagecannot be found at runtime. This problem only seems to be present in Python 2.7.1 but it is a
  • good improvement for earlier releases of Python as well.
  • Added support for setting the description for Windows services.
  • Added hook for using the widget plugins which are part of the PyQt4.uic
  • package.
  • Added additional hooks to remove spurious errors about missing modules
  • and to force inclusion of implicitly imported modules (twitter module
  • and additional submodules of the PyQt4 package).
  • Fixed support for installing frozen executables under Python 3.x on
  • Windows.
  • Removed optional import of setuptools which is not a complete drop-in
  • replacement for distutils and if found, replaces distutils with itself,
  • resulting in some distutils features not being available; for those who
  • require or prefer the use of setuptools, import it in your setup.py.

New in cx_Freeze 4.2.1 (Oct 11, 2011)

  • Added support for specifying bin_path_includes and bin_path_excludes in
  • setup scripts.
  • Added support for compiling Windows services with the Microsoft compiler
  • and building for 64-bit Windows.
  • When installing Windows services, use the full path for both the executable
  • and the configuration file if specified.
  • Eliminate duplicate files for each possible version of Python when building
  • MSI packages for Python 2.7.
  • Fix declaration of namespace packages.
  • Fix check for cx_Logging import library directory.
  • Added hooks for the python-Xlib package.
  • Added hooks to ignore the _scproxy module when not on the Mac platform and
  • the win32gui and pyHook modules on platforms other than Windows.
  • When copying files, copy the stat(information as well as was done in
  • earlier versions of cx_Freeze.
  • Added documentation for the shortcutName and shortcutDir parameters for
  • creating an executable.

New in cx_Freeze 4.2 (Oct 11, 2011)

  • Added support for Python 2.7.
  • Improved support for Python 3.x.
  • Improved support for Mac OS X based on feedback from some Mac users.
  • Improved hooks for the following modules: postgresql, matplotlib, twisted,
  • zope, PyQt4.
  • Improved packaging of MSI files by enabling support for creating shortcuts
  • for the executables, for specifying the initial target directory and for
  • adding other arbitrary configuration to the MSI.
  • Added support for namespace packages such as those distributed for zope.
  • The name of the generated MSI packages now includes the architecture in
  • order to differentiate between 32-bit and 64-bit builds.
  • Removed use of LINKFORSHARED on the Mac which is not necessary and for
  • Python 2.6 at least causes an error to be raised.
  • Turn off filename globbing on Windows
  • Fixed bug that prevented hooks from successfully including files in the
  • build (as is done for the matplotlib sample).
  • Fixed bug that prevented submodules from being included in the build if the
  • format of the import statement was from . import .
  • Reverted bug fix for threading shutdown support which has been fixed
  • differently and is no longer required in Python 2.6.5 and up (in fact an
  • error is raised if the threading module is used in a frozen executable and
  • this code is retained).
  • Fixed bug which resulted in attempts to compile .pyc and .pyo files from
  • the initscripts directory.
  • Fixed selection of "Program Files" directory on Windows in 64-bit MSI
  • packages built by cx_Freeze.

New in cx_Freeze 4.1.2 (Oct 11, 2011)

  • Fix bug that caused the util extension to be named improperly.
  • Fix bug that prevented freezing from taking place if a packaged submodule
  • was missing.
  • Fix bug that prevented freezing from taking place in Python 3.x if the
  • encoding of the source file wasn't compatible with the encoding of the
  • terminal performing the freeze.
  • Fix bug that caused the base modules to be included in the library.zip as
  • well as the base executables.

New in cx_Freeze 4.1.1 (Oct 11, 2011)

  • Added support for Python 3.1.
  • Added support for 64-bit Windows.
  • Ensured that setlocale(is called prior to manipulating file names so
  • that names that are not encoded in ASCII can still be used.
  • Fixed bug that caused the Python shared library to be ignored and the
  • static library to be required or a symbolic link to the shared library
  • created manually.
  • Added support for renaming attributes upon import and other less
  • frequently used idioms in order to avoid as much as possible spurious
  • errors about modules not being found.
  • Force inclusion of the traceback module in order to ensure that errors are
  • reported in a reasonable fashion.
  • Added sample for the PyQt4 package and improved hooks for that package.
  • Enhanced hooks further in order to perform hidden imports and avoid errors
  • about missing modules for several additional commonly used packages and
  • modules.
  • Readded support for the zip include option.
  • Avoid the error about digest mismatch when installing RPMs by modifying
  • the spec files built with cx_Freeze.
  • Ensure that manifest.txt is included in the source distribution.

New in cx_Freeze 4.1 (Oct 11, 2011)

  • Added support for Python 3.x.
  • Added support for services on Windows.
  • Added command line option --silent
  • This option turns off all normal output including the report of the modules
  • that are included.
  • Added command line option --icon
  • Ensure that Py_Finalize(is called even when exceptions take place so that
  • any finalization (such as __del__ callsare made prior to the executable
  • terminating.
  • Ensured that empty directories are created as needed in the target
  • The encodings package and any other modules required to bootstrap the
  • Python runtime are now automatically included in the frozen executable.
  • Ensured that if a target name is specified, that the module name in the zip
  • file is also changed.
  • Enabled support for compiling on 64-bit Windows.
  • If an import error occurs during the load phase, treat that as a bad module
  • as well.
  • Enabled better support of setup.py scripts that call other setup.py
  • scripts such as the ones used by cx_OracleTools and cx_OracleDBATools.
  • On Solaris, ldd outputs tabs instead of spaces so expand them first before
  • looking for the separator.
  • On Windows, exclude the Windows directory and the side-by-side installation
  • directory when determining DLLs to copy since these are generally
  • considered part of the system.
  • On Windows, use %* rather than the separated arguments in the generated
  • batch file in order to avoid problems with the very limited argument
  • processor used by the command processor.
  • For the Win32GUI base executable, add support for specifying the caption to
  • use when displaying error messages.
  • For the Win32GUI base executable, add support for calling the excepthook
  • for top level exceptions if one has been specified.
  • On Windows, ensure that the MSI packages that are built are per-machine
  • by default as otherwise strange things can happen.
  • Fixed bug in the calling of readlink(that would occasionally result in
  • strange behavior or segmentation faults.
  • Duplicate warnings about libraries not found by ldd are now suppressed.
  • Tweaked hooks for a number of modules based on feedback from others or
  • personal experience.

New in cx_Freeze 4.0.1 (Oct 11, 2011)

  • Added support for Python 2.6. On Windows a manifest file is now required
  • because of the switch to using the new Microsoft C runtime.
  • Ensure that hooks are run for builtin modules.

New in cx_Freeze 4.0 (Oct 11, 2011)

  • Added support for copying files to the target directory.
  • Added support for a hook that runs when a module is missing.
  • Added support for binary path includes as well as excludes; use sequences
  • rather than dictionaries as a more convenient API; exclude the standard
  • locations for 32-bit and 64-bit libaries in multi-architecture systems.
  • Added support for searching zip files (egg filesfor modules.
  • Added support for handling system exit exceptions similarly to what Python
  • does
  • Added code to wait for threads to shut down like the normal Python
  • interpreter does.
  • Hooks added or modified based on feedback from many people.
  • Don't include the version name in the display name of the MSI.
  • Use the OS dependent path normalization routines rather than simply use the
  • lowercase value as on Unix case is important;
  • Include a version attribute in the cx_Freeze package and display it in the
  • output for the --version option to the script.
  • Include build instructions
  • Add support for copying files when modules are included which require data
  • files to operate properly; add support for copying the necessary files for
  • the Tkinter and matplotlib modules.
  • Handle deferred imports recursively as needed; ensure that from lists do
  • not automatically indicate that they are part of the module or the deferred
  • import processing doesn't actually work!
  • Handle the situation where a module imports everything from a package and
  • the __all__ variable has been defined but the package has not actually
  • imported everything in the __all__ variable during initialization.
  • Modified license text to more closely match the Python Software Foundation
  • license as was intended.
  • Added sample script for freezing an application using matplotlib.
  • Renamed freeze to cxfreeze to avoid conflict with another package that uses
  • that executable

New in cx_Freeze 4.0b1 (Oct 11, 2011)

  • Added support for placing modules in library.zip or in a separate zip file
  • for each executable that is produced.
  • Added support for copying binary dependent files (DLLs and shared
  • libraries)
  • Added support for including all submodules in a package
  • Added support for including icons in Windows executables
  • Added support for constants module which can be used for determining
  • certain build constants at runtime
  • Added support for relative imports available in Python 2.5 and up
  • Added support for building Windows installers (Python 2.5 and upand
  • RPM packages
  • Added support for distutils configuration scripts
  • Added support for hooks which can force inclusion or exclusion of modules
  • when certain modules are included
  • Added documentation and samples
  • Added setup.py for building the cx_Freeze package instead of a script
  • used to build only the frozen bases
  • FreezePython renamed to a script called freeze in the Python distribution
  • On Linux and other platforms that support it set LD_RUN_PATH to include
  • the directory in which the executable is located