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_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]

  • 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-20260226-44d0c86, os=windows, arch-dir=x64):

https://static.distromate.net/distromate-cli/ci-20260226-44d0c86/windows/x64/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.8.tar.gz (6.5 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.8-py3-none-win_amd64.whl (7.4 kB view details)

Uploaded Python 3Windows x86-64

pyinstaller_plus-0.1.8-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.3 kB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

pyinstaller_plus-0.1.8-py3-none-macosx_11_0_arm64.whl (7.3 kB view details)

Uploaded Python 3macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: pyinstaller_plus-0.1.8.tar.gz
  • Upload date:
  • Size: 6.5 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.8.tar.gz
Algorithm Hash digest
SHA256 b4147948ba47b85244ed9cfba0e1a7d43cf8d792bede2313eb0af9f5cc7879b8
MD5 a82e3b021c9be9d32be9df34bfc55d24
BLAKE2b-256 e44054c565b99715dab9f29de16b166598a558622e5fba0cf790b3f1f1f6f448

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyinstaller_plus-0.1.8-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 824792cf9337a418a875369f5140c52854ad3e761bf3a0d40be6b33acfeec261
MD5 647c754fbb4696631245d53a33a87787
BLAKE2b-256 71ec85dbe9f7d539e18ca9d2c76458680d775d77fced2e3f5e9534bd22678ecd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyinstaller_plus-0.1.8-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a6b96730ed4d87175269a0056ee2b73d0a47e27829a3b617eec21418a2413bb4
MD5 a524dc864412f3bd1c123fcf043db57a
BLAKE2b-256 b66fafef9f6d901b838acd5ababfbbbb110b922b1291f2fabdb1fc4a5a4d97ee

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyinstaller_plus-0.1.8-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a3df3410b6fc5f826e6f0d4dc0aeca142b1c91bbe4af2d86e2100c899b4abb54
MD5 e939e2cb6c62a77c181111d8d3cccdc7
BLAKE2b-256 7f4dea7b6ed4ec1c600d2f5b34c0e9926605c8651c758653e5c536f1f4d7c292

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