Creating single EXE using py2exe for a Tkinter program

18,190

Thanks to this link, you have to edit site-packages/py2exe/build_exe.py and add "tcl85.dll" and "tk85.dll" to the dlls_in_exedir list. This will get it to run, although you'll still have the tcl folders, and those two dlls will be there along-side the exe. But it's way better than bundle_files=3.

        self.dlls_in_exedir = [python_dll,
                               "w9xpopen%s.exe" % (is_debug_build and "_d" or ""),
                               "msvcr71%s.dll" % (is_debug_build and "d" or ""),
                               "tcl85.dll",
                               "tk85.dll"]
Share:
18,190

Related videos on Youtube

Muhammad Farhan
Author by

Muhammad Farhan

I like working on Python, 3D graphics, CAD, games, and just building clean, minimal stuff that helps make lives easier.

Updated on September 15, 2022

Comments

  • Muhammad Farhan
    Muhammad Farhan over 1 year

    I'm trying to use minty's solution provided on this link to generate a single exe file for my Tkinter based program:

    py2exe - generate single executable file

    Here's what I wrote in the setup.py:

    from distutils.core import setup
    import py2exe, sys, os
    
    sys.argv.append('py2exe')
    
    setup(windows=[{'script': 'filename.py'}], \
                options={"py2exe": {"includes": ["decimal", "Tkinter", \
                "tkFileDialog", "csv", "xml.dom.minidom", "os"], \
                'bundle_files': 1, 'compressed': False}}, \
                zipfile = None)
    

    It creates a 'tcl' folder for Tkinter stuff even though I have specified bundle_files = 1. Plus it also generates some other exe w9xpopen.exe. My actual exe, however, does not run, and it doesn't give any errors either. It doesn't even work if I remove all those includes.

    Any thoughts on what I could be missing here? I'm working on a 64-bit Windows 7 machine.