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

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.7.tar.gz (5.9 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.7-py3-none-win_amd64.whl (7.0 kB view details)

Uploaded Python 3Windows x86-64

pyinstaller_plus-0.1.7-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (7.0 kB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

pyinstaller_plus-0.1.7-py3-none-macosx_11_0_arm64.whl (7.0 kB view details)

Uploaded Python 3macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: pyinstaller_plus-0.1.7.tar.gz
  • Upload date:
  • Size: 5.9 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.7.tar.gz
Algorithm Hash digest
SHA256 a10076e6e376f80f76e31e0395b430094459582f9fc08eb499d00eba5f0d6462
MD5 10363b6aa0ce2c649150bde547e52ed1
BLAKE2b-256 73c878a0e4d67243063fb4e3640bf6ef153688c9ea6227bf3c85a10c54be66af

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyinstaller_plus-0.1.7-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 5a9c018023739037c8ea5e29672be2e89b086e7ab73f24b29eb9b218344984a6
MD5 3dcb1631289a55b0451d9342fd5b501a
BLAKE2b-256 faa0e0bd2db12b1706f23b6c2432d0783549095dc7a707fafcf4f3cb6cd115bf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyinstaller_plus-0.1.7-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ec9b946f3059d60567dad486a8c2f9daf0c4f398319837f979b83d7eaf44163f
MD5 7809e6f35c4cab57c7dfe6441598f47a
BLAKE2b-256 b6c2d02fb90e3d49ad97987573fd2bc1ef6ca278ccc1fe3867f5fdf7c97fa72f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyinstaller_plus-0.1.7-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b6fa986b1e09d6d8c6993c28ab3bd25e9dc7b1833cd564949880cf7590d93002
MD5 ae27078d92ce77093f71c2dfc1cc9cb7
BLAKE2b-256 32ef95fca9b6aa388081be785bc4359c8c4a3dcddb227bf523e2169924cf88e1

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