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

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

Built distribution (wheel)

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

Total release size: 1.7 MB

Release files / xsetuper-1.2.1.tar.gz

Download URL xsetuper-1.2.1.tar.gz
Size 1.4 MB
Tags Source
SHA-256 checksum
How to use checksums
db15da39c465a4ed67368c51af0c9569cd814ed538ec185b3ad26ea1efb0ed26
BLAKE2b-256 checksum
How to use checksums
bfd79f9b7e072d1e0c17af98205f07d1d4b921cc9a686285670efe3854d184c6
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.1-py3-none-any.whl

Download URL xsetuper-1.2.1-py3-none-any.whl
Size 281.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
21ed12d30a8d8e5706c28b2fbd6331446a04fa5a31c52f0c38f3d230b0a2363b
BLAKE2b-256 checksum
How to use checksums
1f55db8258cfe905df538ec1830c80ee8c48a7147318fcd881bc8e114b9e2a8e
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

1.2.2

2 release files

This release

1.2.1 This release

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