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_WINDOWS_RESOURCE_URL: Windows resource zip URL (resource.zip)
  • DISTROMATE_MACOS_URL: macOS-specific download URL
  • DISTROMATE_LINUX_URL: Linux-specific download URL
  • DISTROMATE_RESOURCE_URL: shared resource zip URL (Windows only)
  • 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 bundled binary/resource 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

For Windows resource files, the helper also tries:

https://static.distromate.net/distromate-cli/ci-20260227-e709b43/windows/resource.zip

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.10.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.10-py3-none-win_amd64.whl (15.3 MB view details)

Uploaded Python 3Windows x86-64

pyinstaller_plus-0.1.10-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.10-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.10.tar.gz.

File metadata

  • Download URL: pyinstaller_plus-0.1.10.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.10.tar.gz
Algorithm Hash digest
SHA256 dda040ac6ee70314fc2904918451203dfe632a50f8a8fcb20eae3b09abe01476
MD5 e7e473f7556d81ea6e96445cdf57a141
BLAKE2b-256 f3c4e677ca2b04bc93df216f1f99436f9893141b8a26b69b05bb1e618f75d197

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyinstaller_plus-0.1.10-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 a5aeb4cab44ecf9904b7e63302cecb835dc6127d9d77b298945db59348162620
MD5 2e10f37d830b292d49d0ebdb60e8785f
BLAKE2b-256 ce392b25debe5e0c5b1c0cd393a3a9a53b8af3e6fbfd47eb0d61207004a9cb06

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyinstaller_plus-0.1.10-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5b4f2bcd5a3e5a6f7538c5594736f0d57af9d8870961342bc1af2e98fd2a109a
MD5 1933ba144d21c23fb6989630b2136abb
BLAKE2b-256 e1bcd3d9b1a1f3911173e3022a3e1f2b267832dff4d7ef17bdb37d18085a1686

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for pyinstaller_plus-0.1.10-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5d5c93dbf031978d624ea3043814e0f7614724d9b1dac5f1ea435ec0de03df63
MD5 c234145aa5ac2c2b7555eebefdebc1ad
BLAKE2b-256 6d314d22cca53e4f4f5c683d495bd106250c0fdd121e6491f883dc6df84cbfd3

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