Skip to main content

uv-based Python App Launcher - distribute Python apps as single executables

Project description

ux

uv-based Python App Launcher - distribute Python apps as single executables.

Features

  • Single binary distribution - End users don't need Python or uv installed
  • Cross-compilation - Build for Linux/Windows from macOS
  • macOS .app bundle - Native macOS application with icon support
  • Code signing & Notarization - Distribute through macOS Gatekeeper
  • DMG creation - Professional macOS distribution format

Installation

Download from Releases

Or build from source:

cargo install --git https://github.com/i2y/ux

Quick Start

Basic bundling

# Bundle Python app into single binary
ux bundle --project /path/to/project --output ./dist/

Cross-compilation

# Build for Linux from macOS
ux bundle --target linux-x86_64 --output ./dist/

# Build for Windows from macOS
ux bundle --target windows-x86_64 --output ./dist/

macOS .app bundle

# Create .app bundle
ux bundle --format app --output ./dist/

# With code signing
ux bundle --format app --codesign --output ./dist/

# With notarization (requires Apple Developer account)
ux bundle --format app --notarize --output ./dist/

# Create DMG for distribution
ux bundle --format app --codesign --dmg --output ./dist/

Configuration

Add [tool.ux] section to your pyproject.toml:

[project]
name = "myapp"

[project.scripts]
myapp = "myapp.main:main"  # Entry point

[tool.ux]
entry = "myapp"            # Optional: explicit entry point
include = [                # Optional: additional files to include
  "assets/",               # Include entire directory (trailing slash)
  "config.yaml",           # Include specific file
]

[tool.ux.macos]
icon = "assets/icon.png"   # PNG auto-converted to ICNS
bundle_identifier = "com.example.myapp"
bundle_name = "My App"

Included files

The bundle automatically includes:

  • Package directory (detected from [project].name, e.g., myapp/ or src/myapp/)
  • pyproject.toml, uv.lock
  • README.md, LICENSE (if present)

Use [tool.ux].include to add extra files or directories (with trailing slash)

Supported Platforms

Target Cross-compile from macOS
darwin-x86_64 Native
darwin-aarch64 Native
linux-x86_64 Yes
linux-aarch64 Yes
windows-x86_64 Yes

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ux_py-0.1.3.tar.gz (35.6 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

ux_py-0.1.3-py3-none-win_amd64.whl (2.5 MB view details)

Uploaded Python 3Windows x86-64

ux_py-0.1.3-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.6 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

ux_py-0.1.3-py3-none-macosx_11_0_arm64.whl (2.4 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

ux_py-0.1.3-py3-none-macosx_10_12_x86_64.whl (2.6 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

File details

Details for the file ux_py-0.1.3.tar.gz.

File metadata

  • Download URL: ux_py-0.1.3.tar.gz
  • Upload date:
  • Size: 35.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for ux_py-0.1.3.tar.gz
Algorithm Hash digest
SHA256 61e908117e359f446377c26e7d82a2183f673472d5fc5d5ce0e16c0b0a62d605
MD5 9adccaeea5f164d222ffda71c5024f56
BLAKE2b-256 1d3ca775694e819e835e84d2dd636959a0e076d36d08e35ba5f835c0da2f1574

See more details on using hashes here.

Provenance

The following attestation bundles were made for ux_py-0.1.3.tar.gz:

Publisher: release.yml on i2y/ux

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ux_py-0.1.3-py3-none-win_amd64.whl.

File metadata

  • Download URL: ux_py-0.1.3-py3-none-win_amd64.whl
  • Upload date:
  • Size: 2.5 MB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for ux_py-0.1.3-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 aca78b7f34e00aff9ad383b13966ac36c6acd87e4b57f7fdfe6982f0b1ddfd2a
MD5 bf03f6eebbf5a088bf23dd45ec268d8b
BLAKE2b-256 4c0ba4240e4c681f6e200da546bb9a25cb00efc6a279fbd408272954dd56f90d

See more details on using hashes here.

Provenance

The following attestation bundles were made for ux_py-0.1.3-py3-none-win_amd64.whl:

Publisher: release.yml on i2y/ux

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ux_py-0.1.3-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for ux_py-0.1.3-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6fdd727c976c1d212bc473a5014eeb3e391432d1f02f5090a68cd33d8628f87a
MD5 cf4b9903c37162bf2d09a6a1edd600fd
BLAKE2b-256 16f15a75fb454ef0a688b96a99aa46e0eacd0ad6370512cc5d5faf7944ca064d

See more details on using hashes here.

Provenance

The following attestation bundles were made for ux_py-0.1.3-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on i2y/ux

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ux_py-0.1.3-py3-none-macosx_11_0_arm64.whl.

File metadata

  • Download URL: ux_py-0.1.3-py3-none-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 2.4 MB
  • Tags: Python 3, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for ux_py-0.1.3-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 655d1868dd3cbcf197d4a15411c08fffb5d31154c75993ac6dff49b82c472280
MD5 011c46c3d0b266ef381034afc0ae2732
BLAKE2b-256 199a916f83bbbda078a515fac0ff12706f16329108b030551820742e6bbc510e

See more details on using hashes here.

Provenance

The following attestation bundles were made for ux_py-0.1.3-py3-none-macosx_11_0_arm64.whl:

Publisher: release.yml on i2y/ux

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ux_py-0.1.3-py3-none-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for ux_py-0.1.3-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 21d847898dfbe07ec28b677de8783cf2b84318f97327c54225196f24077f26cf
MD5 c14f9952457b840696a23a378c24ef01
BLAKE2b-256 4454bc181561a217888709d3069372aa4d95d7c311b334a5d4bb3a5026982dbf

See more details on using hashes here.

Provenance

The following attestation bundles were made for ux_py-0.1.3-py3-none-macosx_10_12_x86_64.whl:

Publisher: release.yml on i2y/ux

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page