Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

py2exe for Python 3

py2exe is a software to build standalone Windows executable programs from Python scripts. py2exe can build console executables and windows (GUI) executables. py2exe supports the Python versions* included in the official development cycle.

Development of py2exe is hosted here:


The detailed changelog is published on GitHub.


  • Add support for Python 3.11
  • Drop support for Python 3.7
  • Drop support for win32 wheels
    • win32 wheels are still built and shipped but are provided untested. Issues experienced when using these wheels will not be investigated. See #157 for further information.
  • Remove build_exe command line interface. Please use the py2exe.freeze API.


  • Support scipy versions newer than 1.9.2.
  • Fixed documentation for the py2exe.freeze API.


  • Fixed an issue that prevented builds via the deprecated API.


  • Introduce the new py2exe.freeze API. Documentation can be found here.
  • Use of the py2exe command and of distutils is deprecated as per PEP 632. Both these interfaces will be removed in the next major release. See here for a migration guide.
  • Add two hooks to fix the bundling of winrt and passlib.


  • The log file for windows apps is now stored in %APPDATA% by default
  • ModuleFinder now raises an explicit error if a required module is in excludes
  • Restore hook functionality for pkg_resources
  • The Stderr.write method used for windows apps now returns the number of written bytes


  • Drop support for Python 3.6
  • Include package metadata in the bundle archive (to be used by e.g. importlib.metadata)
  • Fixed a bug that prevented to use the optimize option when six was in the bundle
  • Fixed a bug that ignored the optimize flag for some packages


  • Show again relative paths in Tracebacks that happen from the frozen application (#12 and #114)


  • New module finder mf310 written as a wrapper around CPython modulefinder.ModuleFinder
  • Add support for Python 3.10
  • New hook for scipy
  • zipextimporter can now be built as a standalone extension via its own setup script


  • ModuleFinder: add support for the pkg_resources.extern.VendorImporter loader
  • New hooks for pkg_resources and infi


  • zipextimporter supports external modules that use multi-phase initialization (PEP 489)
  • New hook for selenium
  • dllfinder provides a new method to add data files in the zip archive


  • New hook for pycryptodomex
  • ModuleFinder: respect excludes list in import_package
  • Updated hook for matplotlib >= 3.4.0


  • New hook for supporting matplotlib 3.2 and higher.
  • Fix for including implicit namespace packages as per PEP420.


  • Patch MyLoadLibrary to support ssl with bundle_files=0.


  • New module finder with support for implicit namespace packages (PEP 420).
  • DLLFinder automatically excludes VC++ redist and Windows CRT DLLs from bundles.
  • Several fixes for bundling software with bundle_files<=2 (only the standard library is supported, other dependencies may or may not work).
  • New hooks for pycryptodome and shapely.


  • Add support for Python 3.9.
  • Drop support for Python 3.5.
  • New hooks for urllib3 and pandas.

Version (from versions 0.9.x):

  • Introduce compatibility with Python 3.5, 3.6, 3.7, and 3.8.
  • Drop compatibility with Python 3.4 and earlier.
  • New or updated hooks for certifi, numpy, tkinter, socket, ssl, and six.
  • build_exe: the zipfile=None option has been removed.
  • runtime: the Python interpreter DLL is no longer altered before being inserted in the executable bundle.
  • Several bugfixes, better error messages.


pip install py2exe


Use the py2exe.freeze function as documented here.

Using a script or the builder

Using a script with py2exe is deprecated. Please adapt your scripts to use the new freeze API. This interface will be removed in the next major release.

The build_exe (or -m py2exe) CLI was removed in version

Known issues and notes

  • High-level methods or hooks to embed Qt plugins in the bundle (needed by PySide2/PyQt5) are missing.
  • (*) win32 wheels are provided without testing. Users are encouraged to use the win_amd64 wheels (see #157).


Further informations about the original development of py2exe and other usage guidelines can be found in the original README.