Skip to main content

扩展PyInstaller 使其拥有单文件安装功能 不用每次都解压执行

Project description

PyInstallerEx

Enhanced PyInstaller packaging tool that creates single-file executable programs with installation capabilities

🎯 Project Overview

PyInstallerEx is an enhanced packaging tool based on PyInstaller that can package Python applications into single-file executable programs with installation capabilities. Unlike traditional PyInstaller which creates standalone executable files, the installer executable files created by PyInstallerEx have the following characteristics:

  • Extract on first run: Applications are extracted to a temporary directory
  • Reuse installed versions: Subsequent runs use already extracted versions
  • Automatic cleanup: Intelligent management of temporary files

🔧 Environment Requirements

  • Python >= 2.7
  • PyInstaller >= 3.2.1
  • Go >= 1.21 (for building launchers)

⚙️ How It Works

  1. PyInstaller Packaging: Use PyInstaller's --onedir mode to create a complete application directory
  2. Configuration Processing: Apply user configurations and generate metadata
  3. Compression: Compress the application directory into a ZIP file
  4. Binary Merging: Merge the platform-specific launcher binary with the ZIP file
  5. Final Executable: Create a single executable file that handles extraction and execution

✅ Completed Features

1. Core Packaging Features

  • PyInstaller Integration: Use --onedir mode to create complete application directories
  • Configuration System: JSON format configuration file support
  • ZIP Compression: Compress application directories into ZIP files
  • Binary Merging: Merge Go launcher with ZIP file into final executable file

2. Go Launcher Implementation

  • Cross-platform Support: Windows, Linux x86, Linux ARM
  • Smart Installation: Automatically extract on first run, reuse installed versions on subsequent runs
  • Configuration Parsing: Read and process configuration information from executable files
  • Temporary Directory Management: Automatic management of temporary files and cleanup

3. Project Structure Improvement

  • Modular Design: Clear code organization structure
  • Error Handling: Complete exception handling and logging
  • Build Scripts: Automated compilation and testing scripts
  • Complete Documentation: Detailed usage instructions and API documentation

🌟 New Features

1. Enhanced Cache Management

  • Smart Cache Reuse: Check if the application is already installed before extracting (based on ex_{filename}_{md5} directory pattern)
  • Automatic Old Cache Cleanup: Before extracting, search and remove old directories with the same filename prefix (ex_{filename}_*)
  • Cache Isolation: Ensure only one version of the application is kept in the temporary directory

2. Improved Configuration Handling

  • Embedded Configuration Reading: Read configuration from executable files for better portability
  • Flexible Configuration Override: Command-line parameters override configuration files which override embedded defaults

🛠 Development

Build from Source

git clone <repository>
cd PyInstallerEx-master

# Development test installation
pip install -e .

# Build package using traditional setup.py
python setup.py sdist bdist_wheel

# Uninstall old version
pip uninstall pyinstallerex

# Test installation
pip install dist/pyinstallerex-0.1.6-py2-none-any.whl

# Test packaging
python -m PyInstallerEx test/test_script.py 

# Build Go launcher
./build_launchers.sh

Testing

# Test using included test script
python -m PyInstallerEx test/test_script.py --cfg test/test_config.json

# Or from test directory
cd test
python -m PyInstallerEx test_script.py --cfg test_config.json

📦 Installation

Install the latest version from PyPI:

pip install pyinstallerex

🚀 Usage

Basic usage:

# Using pyinstallerex command
pyinstallerex your_script.py

# Using PyInstallerEx command
PyInstallerEx your_script.py

# Using Python -m method (recommended)
python -m PyInstallerEx your_script.py

Using configuration file:

pyinstallerex your_script.py --cfg your_config.json

📝 Changelog

  • 2025-11-07 V 0.1.6

    • Fixed issue with missing launcher binaries in package distribution
    • Improved launcher file search logic to support package data resources
    • Enhanced cross-platform compatibility
  • 2025-11-06 V 0.1.5

    • Updated documentation with latest version information and changelog
  • 2025-11-06 V 0.1.4

    • Fixed issue with launcher file not found on Linux systems
    • Improved launcher file search logic to support files installed via data_files
    • Enhanced cross-platform compatibility
  • 2025-11-06 V 0.1.3

    • Fixed package distribution issue to ensure launcher binary files are correctly included
    • Improved package build and installation process
  • 2025-11-06 V 0.1.2

    • Enhanced cache management with automatic cleanup of old directories
    • Improved configuration handling with embedded configuration reading
    • Added support for Linux ARM64 platform
    • Added command-line option for specifying output filename
  • 2025-10-23 V 0.1.1

    • Initial version, implemented temporary file installation functionality
    • Complete Go launcher implementation
    • Cross-platform support (Windows, Linux x86/ARM)
    • Configuration system
    • Automated build scripts

📄 License

MIT License - see LICENSE file for details

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

pyinstallerex-0.1.6.tar.gz (7.4 MB view details)

Uploaded Source

Built Distributions

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

pyinstallerex-0.1.6-py3-none-any.whl (276.1 kB view details)

Uploaded Python 3

pyinstallerex-0.1.6-py2-none-any.whl (17.0 kB view details)

Uploaded Python 2

File details

Details for the file pyinstallerex-0.1.6.tar.gz.

File metadata

  • Download URL: pyinstallerex-0.1.6.tar.gz
  • Upload date:
  • Size: 7.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.8.3 requests/2.27.1 setuptools/41.2.0 requests-toolbelt/1.0.0 tqdm/4.64.1 CPython/2.7.18

File hashes

Hashes for pyinstallerex-0.1.6.tar.gz
Algorithm Hash digest
SHA256 07a7143f4bf0be692da988c4642e52e82731d5b1cb0bac2831c98dabe616fb89
MD5 b8abdc7c935e8ae2e90b6ffbcf7e8a8f
BLAKE2b-256 9a0f8a7d871636fb3ed4a2e379e41aad0475c787f70b76cc1ee7ea7064e11e23

See more details on using hashes here.

File details

Details for the file pyinstallerex-0.1.6-py3-none-any.whl.

File metadata

  • Download URL: pyinstallerex-0.1.6-py3-none-any.whl
  • Upload date:
  • Size: 276.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for pyinstallerex-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 ae787e6484c27ec8aa65d856273b886684bec348d4796c1e88f6f3a3ce6acab2
MD5 7ceca3d571e797418a6e58afc24f267f
BLAKE2b-256 d709172e7a138f65448968095cc067d3b0c6cb1deaec324e659718d25bda8656

See more details on using hashes here.

File details

Details for the file pyinstallerex-0.1.6-py2-none-any.whl.

File metadata

  • Download URL: pyinstallerex-0.1.6-py2-none-any.whl
  • Upload date:
  • Size: 17.0 kB
  • Tags: Python 2
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.8.3 requests/2.27.1 setuptools/41.2.0 requests-toolbelt/1.0.0 tqdm/4.64.1 CPython/2.7.18

File hashes

Hashes for pyinstallerex-0.1.6-py2-none-any.whl
Algorithm Hash digest
SHA256 b648497ff8a41649adccefff553af377097417acf52c83915d75838aff74c836
MD5 2876458626ae771e6ea37fbefa70d839
BLAKE2b-256 e0fd15b9cb189d69debbe3999b9815325f3d848b036ca175a738f6230a13b55a

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