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.2

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.2
File Size Uploaded
xsetuper-1.2.2.tar.gz 1.4 MB Details

Built distribution (wheel)

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

Total release size: 1.7 MB

Release files / xsetuper-1.2.2.tar.gz

Download URL xsetuper-1.2.2.tar.gz
Size 1.4 MB
Tags Source
SHA-256 checksum
How to use checksums
a8bf2da5d8636ab74ef97c515b144aea568407af74619bbc4d1089ca2db09678
BLAKE2b-256 checksum
How to use checksums
ba90aa8d4be976cf63002945d633988646e202297d3e60d042409bb635936158
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.2-py3-none-any.whl

Download URL xsetuper-1.2.2-py3-none-any.whl
Size 284.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
47aa44068a267bf084702f4eefd90c9abcdc38c4cd6812352e11a881394db9b0
BLAKE2b-256 checksum
How to use checksums
8df3e865fb79d81947bc5e5d63a5bff8d799cc2f9a6ebffed520705287dc2da5
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

1.2.3

2 release files

This release

1.2.2 This release

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