Skip to main content

Distribute Python apps to Windows machines without freezing them.

Project description

Frigobar

Distribute Python apps to Windows machines without freezing them.

Basic usage

frigobar my_app.py

This will create a frigobar folder, with a my_app.bat file in it. Run it to run your app. And since you already opened it, grab a beer!

Installation

pip install frigobar

Options

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

Distribute Python apps 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 an embeddable version 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.
  -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 as  
                        an embeddable package on https://www.python.org/downloads/windows/. Defaults to 3.11.4.
  --copy-directory      Copy the contents of the script directory to the distribution.
  --tkinter             Include Tkinter in 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-4.tar.gz (34.2 kB view details)

Uploaded Source

Built Distribution

frigobar-4-py2.py3-none-any.whl (34.3 kB view details)

Uploaded Python 2 Python 3

File details

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

File metadata

  • Download URL: frigobar-4.tar.gz
  • Upload date:
  • Size: 34.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.4

File hashes

Hashes for frigobar-4.tar.gz
Algorithm Hash digest
SHA256 9dc205a59977f63bff1088d1fe8e2550d93de49fb9c41614e30f27aec75c1019
MD5 0b2b66fb3a33325b7ed154e8480dd33f
BLAKE2b-256 dabce7d25f4d2a766e2b61c6fb3ac1f91c3178687b859956129bc0f07a8685fe

See more details on using hashes here.

File details

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

File metadata

  • Download URL: frigobar-4-py2.py3-none-any.whl
  • Upload date:
  • Size: 34.3 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.4

File hashes

Hashes for frigobar-4-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 4dc62f2351a399c709eb9be9b611e0e77272d0e8746703ca6c1039791129475f
MD5 71aa636832faa4b964df8ac153bc3966
BLAKE2b-256 0f6181baf4e9e02fa6e882cf32906c97e5b93c994cad06409e9d5973f9111d3e

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page