How to bundle a Python Tkinter application including dependencies?

When you create a Tkinter application, you often need to bundle it into a standalone executable that can run on systems without Python installed. Python provides several packaging tools to convert your application and its dependencies into executable files for different operating systems.

Popular Bundling Tools

Different platforms require different bundling tools:

  • PyInstaller ? Cross-platform tool (Windows, macOS, Linux)
  • py2exe ? Windows only
  • py2app ? macOS only
  • cx_Freeze ? Cross-platform alternative

Using PyInstaller (Recommended)

PyInstaller is the most popular choice as it works on all platforms and handles dependencies automatically.

Installation

pip install pyinstaller

Example Tkinter Application

Let's create a simple Tkinter application to bundle ?

import tkinter as tk
from tkinter import messagebox

# Create main window
root = tk.Tk()
root.title("Hello World App")
root.geometry("400x200")

def show_message():
    messagebox.showinfo("Message", "Hello World from Tkinter!")

def display_text():
    label.config(text="Hello World!", fg="blue", font=("Arial", 16))

# Create widgets
label = tk.Label(root, text="Click the button below", font=("Arial", 12))
label.pack(pady=20)

button = tk.Button(root, text="Show Message", command=show_message, bg="lightblue")
button.pack(pady=10)

button2 = tk.Button(root, text="Display Text", command=display_text, bg="lightgreen")
button2.pack(pady=10)

# Start the application
root.mainloop()

Creating the Executable

Save the above code as main_app.py and run this command in the terminal ?

pyinstaller --onefile --windowed main_app.py

Using py2exe (Windows Only)

For Windows users, py2exe is another option. First install it and create a setup file ?

setup.py

from distutils.core import setup
import py2exe

setup(
    windows=[{
        'script': 'main_app.py',
        'dest_base': 'HelloWorldApp'
    }],
    options={
        'py2exe': {
            'includes': ['tkinter'],
            'bundle_files': 1,
            'compressed': True
        }
    },
    zipfile=None
)

Run the setup script to create the executable ?

python setup.py py2exe

Command Options Comparison

Tool Platform Single File GUI Support
PyInstaller Cross-platform Yes (--onefile) Yes (--windowed)
py2exe Windows only Yes (bundle_files=1) Yes (windows param)
cx_Freeze Cross-platform No Yes

Output Structure

After bundling with PyInstaller, you'll get:

  • dist/ folder containing your executable
  • build/ folder with temporary build files
  • main_app.spec file for customization

Conclusion

PyInstaller is the recommended tool for bundling Tkinter applications as it's cross-platform and handles dependencies automatically. Use --onefile for single executable files and --windowed to hide the console window for GUI applications.

Updated on: 2026-03-25T18:27:07+05:30

1K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements