Skip to main content

PyInstaller wrapper that runs DistroMate packaging/publish after build

Project description

pyinstaller-plus

pyinstaller-plus is a PyInstaller-compatible wrapper that keeps your existing PyInstaller workflow and then runs DistroMate packaging or publishing.

Features

  • Compatible with standard PyInstaller arguments
  • Runs distromate package after a successful PyInstaller build
  • Supports publish mode (distromate publish)
  • Works on Windows, macOS, and Linux
  • Auto-detects DistroMate CLI and falls back to installer scripts when needed

Install

pip install pyinstaller-plus

Quick Start

  1. Log in to DistroMate:
distromate login
  1. Create a distromate.yml in your project root.

  2. Build and package:

pyinstaller-plus --dm-version 1.2.3 your.spec
  1. Build and publish:
pyinstaller-plus --publish --dm-version 1.2.3 your.spec

CLI Behavior

pyinstaller-plus executes this flow:

  1. Run python -m PyInstaller ...
  2. Resolve DistroMate CLI from:
    • PATH
    • bundled binary in this package
    • OS-specific installer fallback
  3. Resolve release version from:
    • --dm-version
    • pyproject.toml -> project.version
  4. Run one of:
    • distromate package -v <version>
    • distromate publish -v <version>

Extra Arguments

  • --publish / --dm-publish: publish mode
  • -p: publish shorthand when used as a standalone flag
  • --dm-version <version>: release version passed to DistroMate

Note: -p <path> is still treated as the original PyInstaller -p option. Use --publish if you want unambiguous publish mode.

Example distromate.yml

appid: your_appid
name: MyApp
description: My desktop app

package:
  name: myapp
  executable: dist/myapp.exe
  target: dist
  publisher: MyApp Publisher
  language: english

preservePaths:
  - config
  - data

ignores:
  - "*.log"
  - temp/
  - "__pycache__/"
  - "*.pyc"

Multi-Platform Distribution (Maintainers)

This repository builds platform-specific wheels via GitHub Actions:

  • Workflow: .github/workflows/build-distributions.yml
  • Tool: cibuildwheel
  • Outputs:
    • py3-none-win_amd64.whl
    • py3-none-macosx_*.whl
    • py3-none-linux_*.whl
    • source distribution (sdist)

Before wheel build, CI runs scripts/prepare_distromate_binary.py.

Optional environment variables:

  • DISTROMATE_CLI_PATH: local distromate executable path
  • DISTROMATE_CLI_URL: shared download URL for all platforms
  • DISTROMATE_CLI_VERSION: auto-generate platform download URL in CI
  • DISTROMATE_CLI_BASE_URL: base URL for versioned downloads (default: https://static.distromate.net/distromate-cli)
  • DISTROMATE_CLI_OS: optional OS override for versioned download URL
  • DISTROMATE_CLI_ARCH: optional arch override (x64 / arm64)
  • DISTROMATE_WINDOWS_URL: Windows-specific download URL
  • DISTROMATE_MACOS_URL: macOS-specific download URL
  • DISTROMATE_LINUX_URL: Linux-specific download URL
  • DISTROMATE_CLI_USER_AGENT: override download User-Agent (default: curl/8.5.0)
  • DISTROMATE_SKIP_AUTO_INSTALL=1: disable installer fallback
  • DISTROMATE_STRICT_BUNDLE=1: fail build when bundling is unavailable

If DISTROMATE_CLI_VERSION is set (and no explicit URL env is provided), the CI helper tries versioned paths like:

<base>/<version>/<os>/<arch-dir>/distromate-<os-or-darwin>-<arch>[.exe]

and also fallback to:

<base>/<version>/<os>/distromate-<os-or-darwin>-<arch>[.exe]

  • arch-dir defaults to x64 / arm64
  • for x64, filename arch fallback is amd64 then x64
  • on macOS, filename prefix fallback is darwin then macos

Example (version=ci-20260227-e709b43, os=windows):

https://static.distromate.net/distromate-cli/ci-20260227-e709b43/windows/distromate-windows-amd64.exe

Automatic PyPI Publish

The same workflow can publish to PyPI automatically.

Trigger rules:

  • Push a tag that matches v* (recommended for releases)
  • Or run build-distributions manually with publish=true

Authentication options:

  • PYPI_API_TOKEN repository secret (token upload)
  • Trusted Publishing (OIDC) if no token is provided

Published files include all wheel artifacts and the sdist.

Local Build for This Package

Use the helper script:

./build.ps1

It can clean, build, run twine check, and upload.

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

pyinstaller_plus-0.1.9.tar.gz (6.6 kB view details)

Uploaded Source

Built Distributions

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

pyinstaller_plus-0.1.9-py3-none-win_amd64.whl (4.4 MB view details)

Uploaded Python 3Windows x86-64

pyinstaller_plus-0.1.9-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (4.2 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

pyinstaller_plus-0.1.9-py3-none-macosx_11_0_arm64.whl (4.0 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

File details

Details for the file pyinstaller_plus-0.1.9.tar.gz.

File metadata

  • Download URL: pyinstaller_plus-0.1.9.tar.gz
  • Upload date:
  • Size: 6.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pyinstaller_plus-0.1.9.tar.gz
Algorithm Hash digest
SHA256 7368e868788103be9edab5047f518c7a3c7e3356565e6a8b2ab20c3d254332d3
MD5 2ef5a12811d2aff866f9fa0dd4ed3648
BLAKE2b-256 26b697f1e8efc4642e1839f668d9a005b96aa4b157da4e63b4c87c212d21388d

See more details on using hashes here.

File details

Details for the file pyinstaller_plus-0.1.9-py3-none-win_amd64.whl.

File metadata

File hashes

Hashes for pyinstaller_plus-0.1.9-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 00acac6aeedba07e49a81b0437366a7542793d940427a81fa2e9d3b835528de9
MD5 afa1aa7a8bef0a2d8753f4ab1c875800
BLAKE2b-256 201fc38c7ddb8bfba8614b01ab53d9a832786e6bb01c25840223f6bdc1f4a5a6

See more details on using hashes here.

File details

Details for the file pyinstaller_plus-0.1.9-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyinstaller_plus-0.1.9-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9bcc5bfaeafff8b263ddc964d020ecc2aaa4e37f69c23d0e713bd8c32fe7c075
MD5 4d0eec6dd06a6d0d5fdba0d1c08b7903
BLAKE2b-256 843cc01a7b65639f42a95ae0c9836d5af193fd4a70c95a3d1f738eacb97f3ee4

See more details on using hashes here.

File details

Details for the file pyinstaller_plus-0.1.9-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyinstaller_plus-0.1.9-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5f6f24b272a2d0f43a76d1caf0ab73c83f57987b2cc41749bb8ab87b8846162b
MD5 aa5080f3b36364ead8b314f54a97fd14
BLAKE2b-256 faa68dc5762c96cece704f40395dad614e57963fae24869f932f0f94a7610141

See more details on using hashes here.

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