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/orsrc/myapp/) pyproject.toml,uv.lockREADME.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
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
61e908117e359f446377c26e7d82a2183f673472d5fc5d5ce0e16c0b0a62d605
|
|
| MD5 |
9adccaeea5f164d222ffda71c5024f56
|
|
| BLAKE2b-256 |
1d3ca775694e819e835e84d2dd636959a0e076d36d08e35ba5f835c0da2f1574
|
Provenance
The following attestation bundles were made for ux_py-0.1.3.tar.gz:
Publisher:
release.yml on i2y/ux
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ux_py-0.1.3.tar.gz -
Subject digest:
61e908117e359f446377c26e7d82a2183f673472d5fc5d5ce0e16c0b0a62d605 - Sigstore transparency entry: 810109280
- Sigstore integration time:
-
Permalink:
i2y/ux@59edab200f41e3fb4d648f577020d728cffc39f2 -
Branch / Tag:
refs/tags/v0.1.3 - Owner: https://github.com/i2y
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@59edab200f41e3fb4d648f577020d728cffc39f2 -
Trigger Event:
push
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aca78b7f34e00aff9ad383b13966ac36c6acd87e4b57f7fdfe6982f0b1ddfd2a
|
|
| MD5 |
bf03f6eebbf5a088bf23dd45ec268d8b
|
|
| BLAKE2b-256 |
4c0ba4240e4c681f6e200da546bb9a25cb00efc6a279fbd408272954dd56f90d
|
Provenance
The following attestation bundles were made for ux_py-0.1.3-py3-none-win_amd64.whl:
Publisher:
release.yml on i2y/ux
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ux_py-0.1.3-py3-none-win_amd64.whl -
Subject digest:
aca78b7f34e00aff9ad383b13966ac36c6acd87e4b57f7fdfe6982f0b1ddfd2a - Sigstore transparency entry: 810109297
- Sigstore integration time:
-
Permalink:
i2y/ux@59edab200f41e3fb4d648f577020d728cffc39f2 -
Branch / Tag:
refs/tags/v0.1.3 - Owner: https://github.com/i2y
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@59edab200f41e3fb4d648f577020d728cffc39f2 -
Trigger Event:
push
-
Statement type:
File details
Details for the file ux_py-0.1.3-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: ux_py-0.1.3-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 2.6 MB
- Tags: Python 3, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6fdd727c976c1d212bc473a5014eeb3e391432d1f02f5090a68cd33d8628f87a
|
|
| MD5 |
cf4b9903c37162bf2d09a6a1edd600fd
|
|
| BLAKE2b-256 |
16f15a75fb454ef0a688b96a99aa46e0eacd0ad6370512cc5d5faf7944ca064d
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ux_py-0.1.3-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
6fdd727c976c1d212bc473a5014eeb3e391432d1f02f5090a68cd33d8628f87a - Sigstore transparency entry: 810109303
- Sigstore integration time:
-
Permalink:
i2y/ux@59edab200f41e3fb4d648f577020d728cffc39f2 -
Branch / Tag:
refs/tags/v0.1.3 - Owner: https://github.com/i2y
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@59edab200f41e3fb4d648f577020d728cffc39f2 -
Trigger Event:
push
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
655d1868dd3cbcf197d4a15411c08fffb5d31154c75993ac6dff49b82c472280
|
|
| MD5 |
011c46c3d0b266ef381034afc0ae2732
|
|
| BLAKE2b-256 |
199a916f83bbbda078a515fac0ff12706f16329108b030551820742e6bbc510e
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ux_py-0.1.3-py3-none-macosx_11_0_arm64.whl -
Subject digest:
655d1868dd3cbcf197d4a15411c08fffb5d31154c75993ac6dff49b82c472280 - Sigstore transparency entry: 810109284
- Sigstore integration time:
-
Permalink:
i2y/ux@59edab200f41e3fb4d648f577020d728cffc39f2 -
Branch / Tag:
refs/tags/v0.1.3 - Owner: https://github.com/i2y
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@59edab200f41e3fb4d648f577020d728cffc39f2 -
Trigger Event:
push
-
Statement type:
File details
Details for the file ux_py-0.1.3-py3-none-macosx_10_12_x86_64.whl.
File metadata
- Download URL: ux_py-0.1.3-py3-none-macosx_10_12_x86_64.whl
- Upload date:
- Size: 2.6 MB
- Tags: Python 3, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
21d847898dfbe07ec28b677de8783cf2b84318f97327c54225196f24077f26cf
|
|
| MD5 |
c14f9952457b840696a23a378c24ef01
|
|
| BLAKE2b-256 |
4454bc181561a217888709d3069372aa4d95d7c311b334a5d4bb3a5026982dbf
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ux_py-0.1.3-py3-none-macosx_10_12_x86_64.whl -
Subject digest:
21d847898dfbe07ec28b677de8783cf2b84318f97327c54225196f24077f26cf - Sigstore transparency entry: 810109302
- Sigstore integration time:
-
Permalink:
i2y/ux@59edab200f41e3fb4d648f577020d728cffc39f2 -
Branch / Tag:
refs/tags/v0.1.3 - Owner: https://github.com/i2y
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@59edab200f41e3fb4d648f577020d728cffc39f2 -
Trigger Event:
push
-
Statement type: