Skip to main content

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.

Advanced usage

Frigobar supports two modes of dependency management:

In this mode, you declare your dependencies either in a pyproject.toml file in the same directory as your script, or using inline script metadata (PEP 723) directly in your script file.

Frigobar will automatically detect pyproject.toml or inline metadata and configure the distribution to use uv for dependency resolution and Python version management.

Example with inline metadata:

# /// script
# requires-python = ">=3.12"
# dependencies = [
#     "requests",
#     "pandas",
# ]
# ///
import requests
import pandas

Usage:

frigobar my_script.py

Classical dependencies

In this mode, you provide a standard requirements.txt file. You can also optionally specify the Python version to be used.

Usage:

frigobar my_script.py -r requirements.txt

Or specifying a Python version:

frigobar my_script.py -r requirements.txt -p 3.12.0

Installation

pip install frigobar

Options

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

Distribute Python scripts to Windows machines without freezing them. The folder of the resulting distribution can be copied to any Windows machine. Users should run "<script_name>.bat" to run the script. All the dependencies, including Python, will be downloaded and installed 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 classical requirements file (usually called requirements.txt) that lists the dependencies of the script. If not provided, dependencies must be declared in a pyproject.toml file or inline.
  -p PYTHON_VERSION, --python-version PYTHON_VERSION, --python PYTHON_VERSION
                        Python version, in X.Y.Z format, that the distribution should use. Only works when --requirements-file is specified. If not provided, the latest Python supported by the final user's system will be used.
  --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. Under the hood, Frigobar uses uv, an extremely fast Python package installer and resolver. This ensures a robust and reproducible environment setup, supporting both modern (pyproject.toml, inline metadata) and classical (requirements.txt) dependency definitions.

Release files for frigobar 6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for frigobar 6
File Size Uploaded
frigobar-6.tar.gz 7.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for frigobar 6
File Interpreter ABI Platform
frigobar-6-py2.py3-none-any.whl Python 3, Python 2 none any Details

Total release size: 13.7 kB

Release files / frigobar-6.tar.gz

Download URL frigobar-6.tar.gz
Size 7.2 kB
Tags Source
SHA-256 checksum
How to use checksums
7b970a1b97145c2a8bda1fb5479e50c73c1a0221786582ef5ab07437d03840d0
BLAKE2b-256 checksum
How to use checksums
5eaf145f53c82d65f708450f2f0504efeb6f9917d806427ac048c332a44e1e9a
Upload date
Uploaded using Trusted Publishing?
What is 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}

Release files / frigobar-6-py2.py3-none-any.whl

Download URL frigobar-6-py2.py3-none-any.whl
Size 6.4 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
a178b395008ac70c2470802cc5c62f175362a32481b254c19a1b36db93ffa2a5
BLAKE2b-256 checksum
How to use checksums
ef3a975f6400a4520496e56fd8737a42ecb96a98a5e82d1b5a3d6648732cc462
Upload date
Uploaded using Trusted Publishing?
What is 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}

Release history Release notifications | RSS feed

14

2 release files

13

2 release files

12

2 release files

11

2 release files

10

2 release files

9

2 release files

8

2 release files

7

2 release files

This release

6 This release

2 release files

5

2 release files

4

2 release files

3

2 release files

2

2 release files

1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page