Skip to main content

Distribute Python scripts to Windows machines without freezing them.

Project description

Frigobar

Distribute Python scripts to Windows machines without freezing them.

Basic usage

frigobar my_script.py

This will create a frigobar folder, with a my_script.bat file in it. Run it to run your app.

Installation

pip install frigobar

Options

> frigobar --help
usage: cli.py [-h] [-r REQUIREMENTS_FILE] [-p PYTHON_VERSION] [-t TIMESTAMP] [--copy-directory] script-path [target-directory]

Distribute Python scripts to Windows machines without freezing them. The resulting distribution will be put in a folder that can be copied to any Windows machine. Users should run "<script_name>.bat" to run the
script. All the dependencies, including a standalone build of Python, will be downloaded on the first run.

positional arguments:
  script-path           Path to the script to distribute.
  target-directory      Folder where the distribution will be put. Defaults to 'frigobar'.

options:
  -h, --help            show this help message and exit
  -r REQUIREMENTS_FILE, --requirements-file REQUIREMENTS_FILE
                        Path to a requirements file that lists the dependencies of the script. Defaults to'requirements.txt'.
  -p PYTHON_VERSION, --python-version PYTHON_VERSION, --python PYTHON_VERSION
                        Python version, in X.Y.Z format, that the distribution should use. The version must be available on https://github.com/astral-sh/python-build-standalone/releases. Defaults to 3.13.11.
  -t TIMESTAMP, --timestamp TIMESTAMP
                        Release timestamp (YYYYMMDD format) for the Python build. Check https://github.com/astral-sh/python-build-standalone/releases for available dates. Defaults to 20251205.
  --copy-directory      Copy the contents of the script directory to the distribution.

Rationale

A common technique to distribute Python apps is to "freeze" them using tools like PyInstaller or cx_Freeze. These freezers create a standalone executable that contains your app and all its dependencies. This is a workable solution, but it has two main drawbacks:

  1. The resulting frozen app is often huge. It's not uncommon to see a simple app taking MBs of space.
  2. Because dependence resolution is hard, the frozen app may contain more or less dependencies than it needs. Less dependencies lead to dread "working-app-that-stop-working-when-you-freeze-it" situations. Unnecessary dependencies lead to bloated apps.

Frigobar avoids those problems by postponing the download of the Python interpreter and all the app's dependencies to the first time the user runs the app, making the app the smallest it can be. Frigobar also doesn't try to be smart about dependencies and will only download the ones explicitly listed in a requirements.txt file. This a closer experience to what a developer does when he runs the app in his own machine, which hopefully will lead to less surprises to users.

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

frigobar-5.tar.gz (7.3 kB view details)

Uploaded Source

Built Distribution

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

frigobar-5-py2.py3-none-any.whl (7.6 kB view details)

Uploaded Python 2Python 3

File details

Details for the file frigobar-5.tar.gz.

File metadata

  • Download URL: frigobar-5.tar.gz
  • Upload date:
  • Size: 7.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.17 {"installer":{"name":"uv","version":"0.9.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for frigobar-5.tar.gz
Algorithm Hash digest
SHA256 f332aa622e79dfe91e4605249734a8b7425581e246f4d0909f55b54473a83f94
MD5 2bfcda67f9df4e2d566a4a0947892eed
BLAKE2b-256 3e29fa97734b67cdfbf705001793ce54ac3826bf8c08df402ef5c4ad9743ae6a

See more details on using hashes here.

File details

Details for the file frigobar-5-py2.py3-none-any.whl.

File metadata

  • Download URL: frigobar-5-py2.py3-none-any.whl
  • Upload date:
  • Size: 7.6 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for frigobar-5-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 7cf0982bebd2e842181e9e48d25b50d87bb48081fd4baeac18185f0ece3c63e3
MD5 2ab4dcc8db0ab58f3eb74bd4d3441d1c
BLAKE2b-256 fa7d4d84e72159a9902508b6dd33fbfd9f01c4d12fbe65dd18cdb65998fc89c0

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