Python executables: py2exe or PyInstaller?

WindowsPythonExecutable

Windows Problem Overview


To create executable files (windows) I assume that we should use one of them: Py2exe or PyInstaller.

What are the difference between them?

Windows Solutions


Solution 1 - Windows

Py2exe and PyInstaller both are wrappers but here are few differences that I noticed,

  1. Py2exe is compatible with python2.4+ including python3.0 & 3.1 whereas PyInstaller is currently, compatible with python 2.7 and 3.3–3.5
  2. As far I know, Py2exe didn't support signing whereas Pyinstaller has support for signing from version 1.4
  3. In PyInstaller it is easy to create one exe, By default both create a bunch of exes & dlls.
  4. In py2exe its easier to embed manifest file in exe, useful for run as administrator mode in windows vista and beyond.
  5. Pyinstaller is modular and has a feature of hooks to include files in the build that you like. I don't know about this feature in py2exe.

Hope this helps you in your decision making.

[Update] - It looks like PyInstaller is actively developed (https://github.com/pyinstaller/pyinstaller/) and released. py2exe is still using sourceforge and its release cycle is very random on pypi there is no build after 2014 and their code show development in 2017 as well (https://sourceforge.net/p/py2exe/svn/HEAD/tree/trunk/py2exe-3/py2exe/). So, I recommend using pyinstaller till the time py2exe stabilizes its release cycle in favor of developers.

Solution 2 - Windows

From the message of the wikipedia,py2exe is not active for long time :

Stable release: 0.9.2.2 for Python 3 /; 21 October 2014; 0.6.9 for Python 2 /; 15 November 2008

So I advise to use the pyinstaller.....

But now the pyinstaller also meet the problemThe offical website of pyinstaller:

> Help keeping PyInstaller alive: Maintaining PyInstaller is a huge amount of work. PyInstaller development can only continue if users and companies provide sustainable funding. See Funding PyInstaller for how to support PyInstaller.

Solution 3 - Windows

There is a fork of py2exe that is being actively developed to support ongoing versions of Python, https://github.com/albertosottile/py2exe, currently at v0.9.3.2 which works with Python 3.7.

I've used it on a small project and it works as expected, producing a working executable. Download the correct version from the releases page and install with pip.

Update 2020-11-06:

As per LolPython's comment, this fork now redirects to the official repo so use that instead:

https://github.com/py2exe/py2exe

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestiontranteView Question on Stackoverflow
Solution 1 - WindowsGagandeep SinghView Answer on Stackoverflow
Solution 2 - Windowsfive element godView Answer on Stackoverflow
Solution 3 - WindowsadejonesView Answer on Stackoverflow