LogoPyloid
ApiPyloid builder

pyinstaller

The pyinstaller function provides a rich terminal interface for building Pyloid applications with PyInstaller, offering real-time build progress tracking and detailed logging.


Function Signature

def pyinstaller(scriptname: str, options: List[str]) -> None:

Description

Executes PyInstaller with enhanced visual feedback and progress monitoring. Unlike standard PyInstaller, this function provides:

  • Real-time progress display with build logs
  • Rich terminal interface with panels and colors
  • Dynamic layout that adapts to terminal size
  • Error handling with detailed failure information
  • Success/failure indicators with appropriate styling

The interface splits the terminal into two panels:

  • Left panel: Build information (script name, options)
  • Right panel: Live build log with scrolling

Parameters

Prop

Type

Common PyInstaller Options

Basic Options

OptionDescriptionExample
--nameApplication name--name=MyApp
--distpathDistribution directory--distpath=./dist
--workpathWorking/build directory--workpath=./build
--cleanClean cache and temporary files--clean
--noconfirmReplace output directory without asking--noconfirm

Build Mode Options

OptionDescription
--onedirCreate one-folder bundle (default)
--windowedHide console window (GUI apps)

Data and Resource Options

OptionDescriptionExample
--add-dataAdd data files/directories--add-data=src/:dest/
--iconSet application icon--icon=icon.ico
--hidden-importAdd hidden imports--hidden-import=module

Usage Examples

Basic GUI Application

from pyloid_builder.pyinstaller import pyinstaller

pyinstaller(
    'main.py',
    [
        '--name=MyApp',
        '--onedir',
        '--windowed',
        '--clean',
        '--noconfirm',
    ]
)

Complete Pyloid Application

from pyloid_builder.pyinstaller import pyinstaller
from pyloid.utils import get_platform

# Platform-specific icon
if get_platform() == 'windows':
    icon = './icons/icon.ico'
elif get_platform() == 'macos':
    icon = './icons/icon.icns'
else:
    icon = './icons/icon.png'

pyinstaller(
    './src-pyloid/main.py',
    [
        '--name=pyloid-app',
        '--distpath=./dist',
        '--workpath=./build',
        '--clean',
        '--noconfirm',
        '--onedir',
        '--windowed',
        '--add-data=./src-pyloid/icons/:./src-pyloid/icons/',
        '--add-data=./dist-front/:./dist-front/',
        f'--icon={icon}',
    ]
)

Integration with Optimize

The pyinstaller function is typically used together with optimize:

# 1. Build the application
pyinstaller('main.py', build_options)

# 2. Optimize the output
from pyloid_builder.optimize import optimize
optimize('./dist/MyApp/_internal', 'optimize.spec')

This workflow provides a complete build and optimization pipeline for Pyloid applications.


Platform-Specific Notes

Windows

  • Icon format: .ico
  • Executable extension: .exe
  • Console hiding: --windowed option

macOS

  • Icon format: .icns
  • Bundle structure: .app directory
  • Code signing may be required for distribution

Linux

  • Icon format: .png
  • No extension for executables
  • May require additional system dependencies