Compile Python applications into stand-alone executables

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
  • Nuitka

    Nuitka is a Python compiler written in Python. It's fully compatible with Python 2.6, 2.7, 3.4, 3.5, 3.6, 3.7, 3.8, 3.9, 3.10, and 3.11. You feed it your Python app, it does a lot of clever things, and spits out an executable or extension module.

  • Also worth checking out: Nuitka [1]. It actually compiles your Python into machine code (albeit still making use of the CPython interpreter).

    Despite the title, pyinstaller doesn't really compile anything, it just bundles your bytecode and the interpreter into a binary. You can get similar-ish results the Nuitka by combining it with Cython but it's a lot more work.

    [1] https://nuitka.net/

  • PyInstaller

    Freeze (package) Python programs into stand-alone executables

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • PyOxidizer

    A modern Python application packaging and distribution tool

  • My favorite is the fairly new, but excellent PyOxidizer: https://github.com/indygreg/PyOxidizer

    It's written in rust and can embed resources and dependencies in the executable.

  • q

    q - Run SQL directly on delimited files and multi-file sqlite databases (by harelba)

  • How did you go about developing against the Starlark API, any IDE support?

    [0] https://github.com/harelba/q/blob/master/pyoxidizer.bzl

  • false-positive-malware-reporting

    Trying to release your software sucks, mostly because of antivirus false positives. I don't have an answer, but I do have a list of links to help get your code whitelisted.

  • PSA: If you distribute this kind of software, be ready to deal with many antivirus issues. [1] has helped but it's still a very manual and frustrating process on every release.

    [1]: https://github.com/hankhank10/false-positive-malware-reporti...

  • PSA: If you distribute this kind of software, be ready to deal with many antivirus issues. [1] has helped but it's still a very manual and frustrating process on every release.

    [1]: https://github.com/hankhank10/false-positive-malware-reporti...

  • jellyfin-mpv-shim

    MPV Cast Client for Jellyfin

  • I have found that a useful way to evade antivirus issues with PyInstaller is to build my own copy of the bootloader and encourage use of the 64 bit version over the 32 bit version (since most malware will use the 32 bit version to infect the most computers).

    I have a GitHub CI job which is able to automate the process for each release. https://github.com/jellyfin/jellyfin-mpv-shim/blob/master/.g...

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
  • legacy-python-cli

    Discontinued Command line interface used by all WakaTime text editor plugins.

  • I really tried to use PyInstaller and Nuitka to deploy a Python command line [1] to Windows, Mac, and Linux users. We couldn't get around some system dependencies like OpenSSL needing to be available and not broken on user machines. We ended up re-writing the whole program from Python into Go [2].

    Using Go solved so many long-tail bugs for us and just simplified the whole process of shipping code to user machines.

    [1] https://github.com/wakatime/legacy-python-cli

    [2] https://github.com/wakatime/wakatime-cli

  • wakatime-cli

    Command line interface used by all WakaTime text editor plugins

  • I really tried to use PyInstaller and Nuitka to deploy a Python command line [1] to Windows, Mac, and Linux users. We couldn't get around some system dependencies like OpenSSL needing to be available and not broken on user machines. We ended up re-writing the whole program from Python into Go [2].

    Using Go solved so many long-tail bugs for us and just simplified the whole process of shipping code to user machines.

    [1] https://github.com/wakatime/legacy-python-cli

    [2] https://github.com/wakatime/wakatime-cli

  • flambeau

    Nim bindings to libtorch

  • That’s one thing I like about Nim. It can compile to C++ and so can directly wrap C++ code. While Nim’s ecosystem is small it’s easy enough to wrap most any C/C++ library. It’s great for OpenCV. Some folks have been updating direct PyTorch C++ api (1)!

    1: https://github.com/SciNim/flambeau

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts