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.pyto freeze pyproject.tomlconfiguration 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 exportpyproject.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)
| File | Size | Uploaded | |
|---|---|---|---|
| xsetuper-1.2.3.tar.gz | 1.4 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|