Skip to main content

xsetuper

xsetuper creates standalone executables from Python scripts, with the same performance as the original script. It is cross-platform and should work on any platform that Python runs on.

Features

  • Cross-platform: Windows, macOS, Linux
  • Built-in GUI — manage, configure and build projects visually; no extra dependencies (uses tkinter from the standard library)
  • Fast builds with optimized module discovery
  • Simple CLI: xsetuper --script myapp.py to freeze
  • pyproject.toml configuration support
  • GUI and console application support
  • MSI, DMG, AppImage, DEB, RPM installer generation
  • Automatic dependency detection

Graphical Interface

xsetuper ships with a full graphical interface — no extra packages to install:

xsetuper gui
# or
xsetuper-gui
# or open a specific project folder
xsetuper-gui /path/to/project

The GUI provides:

  • Project manager — save/load projects (.xsetuper.json) and export pyproject.toml
  • Recent projects list with one-click reopening
  • Multiple executables per project, with icon, base (console/gui), manifest, shortcut and UAC options
  • Module control — include/exclude lists, packages, build constants
  • Files & zip control — extra data files, zip include/exclude packages, path replacement
  • Smart setup — analyzes your script's imports and suggests include/exclude lists
  • Quickstart wizard — two questions and your project is ready
  • One-click build with live console output, cancel support, and post-build actions (run app / open output folder)
  • Installer creation — MSI, DMG, AppImage, DEB, RPM toggles run automatically after build (per platform)
  • Dark / light themes with automatic system detection

Installation

pip install xsetuper

Or with conda:

conda install -c conda-forge xsetuper

Quick Start

CLI Usage

The simplest way to freeze your Python application:

xsetuper --script myapp.py

This creates a standalone executable in build/exe.<platform>-<python-version>/.

Common CLI Options

# Specify output directory
xsetuper --script myapp.py --target-dir dist/

# Set custom executable name
xsetuper --script myapp.py --target-name MyApp

# Include an icon
xsetuper --script myapp.py --icon icon.ico

# GUI application (no console window on Windows)
xsetuper --script myapp.py --base gui

# Build with optimization
xsetuper build_exe --optimize=2

pyproject.toml Configuration

Add your freeze configuration directly in pyproject.toml:

[tool.xsetuper.build_exe]
excludes = ["tkinter", "unittest"]
includes = ["my_package"]
optimize = 1
silent = false

[[tool.xsetuper.executables]]
script = "myapp.py"
base = "gui"
target_name = "MyApp"
icon = "icon.ico"

Then build with:

xsetuper build_exe

Python API

from xsetuper import setup, Executable

setup(
    name="MyApp",
    version="1.0",
    description="My Application",
    executables=[
        Executable(
            "myapp.py",
            base="gui",
            target_name="MyApp",
            icon="icon.ico",
        )
    ],
)

Creating Installers

Windows (MSI)

xsetuper bdist_msi

macOS (DMG)

xsetuper bdist_dmg

Linux (AppImage)

xsetuper bdist_appimage

Linux (DEB)

xsetuper bdist_deb

Advanced Usage

Excluding Modules

[tool.xsetuper.build_exe]
excludes = [
    "tkinter",
    "unittest",
    "email",
    "xml",
    "pydoc",
]

Including Data Files

[tool.xsetuper.build_exe]
include_files = [
    ("data/", "data/"),
    ("config.json", "config.json"),
]

Optimizing the Build

[tool.xsetuper.build_exe]
optimize = 2  # Maximum optimization (removes docstrings)
no_compress = false
zip_include_packages = ["encodings"]

Development

git clone https://github.com/ifekri/xsetuper.git
cd xsetuper
pip install -e ".[dev]"

Running Tests

pytest tests/ -v

Coverage

pytest tests/ --cov=xsetuper --cov-report=term-missing

License

MIT License. See LICENSE for details.

Release files for xsetuper 1.2.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for xsetuper 1.2.3
File Size Uploaded
xsetuper-1.2.3.tar.gz 1.4 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for xsetuper 1.2.3
File Interpreter ABI Platform
xsetuper-1.2.3-py3-none-any.whl Python 3 none any Details

Total release size: 1.7 MB

Release files / xsetuper-1.2.3.tar.gz

Download URL xsetuper-1.2.3.tar.gz
Size 1.4 MB
Tags Source
SHA-256 checksum
How to use checksums
3f2c06e76cb6d6b8f8ffd32a274208ff4b3c9da4a6ea61a09625e1dc85d0b331
BLAKE2b-256 checksum
How to use checksums
0d1c5bf772336f8f570b78e3ce70dffd47e45b04690f6aa363a2a3bbac1b3f4a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.14

Release files / xsetuper-1.2.3-py3-none-any.whl

Download URL xsetuper-1.2.3-py3-none-any.whl
Size 284.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e7098e2eb7983d8f7f56be42fe2b9a7ea0576deb69b6a167e330c9682acb8dc4
BLAKE2b-256 checksum
How to use checksums
b1ff1df21ef0a8df7617e4b43e47aa5339e2d028db52ed921e203924e19a7218
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.14

Release history Release notifications | RSS feed

This release

1.2.3 This release

2 release files

1.2.2

2 release files

1.2.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page