Truly portable executables written in python in 2023

This page summarizes the projects mentioned and recommended in the original post on /r/learnprogramming

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.
www.influxdata.com
featured
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
  • auditwheel

    Auditing and relabeling cross-distribution Linux wheels.

  • Hi there! I've recently spent a lot of time figuring out how to distribute tools written in Python as standalone, self-contained executables, that will works on most of the linux distribution without special environment (including python itself). Decided to write this post to share and discuss my approach. I'd be grateful for any feedback and help on that topic! Here are a few simple steps I've come up with to make this trick: 1) This first is very obvious - use special tooling that can make such an executable, like Nuitka, Pyoxidizer, PyInstaller, python-appimage, etc. 2) Build your application against old enough glibc. You can do this using some old Linux distribution or just be setting up such toolchain manually. Its matters for c extensions, tools like nuitka/pyoxidizer and the python itself. 3) Last but not least - don't forget about dependencies and the dependencies of your dependencies. All Python wheels should have either an `any` [platform tag](https://packaging.python.org/en/latest/specifications/platform-compatibility-tags/) or one of the [manylinux](https://peps.python.org/pep-0600/) tags that suits your requirements. You can check tags and repair the bad ones with [auditwheel](https://github.com/pypa/auditwheel). But fortunately, in the last 5-10 years, most of the mainstream packages have received manylinux wheels. Of course, there will be issues with PyOxidizer/Nuitka/pyinstaller/etc pitfalls, especially with big projects, so you need some e2e tests in every Linux you want to support. For educational purposes, I made [this little repo](https://github.com/asapelkin/overpackaged). It includes: 1) A sample app with bad dependencies and a C extension. 2) A script to create a 'wheelhouse' with compatible wheels only (`manylinux*` and `any`). 3) Scripts to build executables using Nuitka, PyOxidizer, Appimage, pex. 4) Portability tests (run executables in different linux distros) and performance benchmarks. 5) Readme and Makefile to run any step with single command. It's obviously not a very useful repo, but at least it helped me to explore this topic a little, maybe it could help to demonstrate my approach to the topic.

  • overpackaged

    Demo project to demonstrate different ways to create standalone selfcontained app in python

  • Hi there! I've recently spent a lot of time figuring out how to distribute tools written in Python as standalone, self-contained executables, that will works on most of the linux distribution without special environment (including python itself). Decided to write this post to share and discuss my approach. I'd be grateful for any feedback and help on that topic! Here are a few simple steps I've come up with to make this trick: 1) This first is very obvious - use special tooling that can make such an executable, like Nuitka, Pyoxidizer, PyInstaller, python-appimage, etc. 2) Build your application against old enough glibc. You can do this using some old Linux distribution or just be setting up such toolchain manually. Its matters for c extensions, tools like nuitka/pyoxidizer and the python itself. 3) Last but not least - don't forget about dependencies and the dependencies of your dependencies. All Python wheels should have either an `any` [platform tag](https://packaging.python.org/en/latest/specifications/platform-compatibility-tags/) or one of the [manylinux](https://peps.python.org/pep-0600/) tags that suits your requirements. You can check tags and repair the bad ones with [auditwheel](https://github.com/pypa/auditwheel). But fortunately, in the last 5-10 years, most of the mainstream packages have received manylinux wheels. Of course, there will be issues with PyOxidizer/Nuitka/pyinstaller/etc pitfalls, especially with big projects, so you need some e2e tests in every Linux you want to support. For educational purposes, I made [this little repo](https://github.com/asapelkin/overpackaged). It includes: 1) A sample app with bad dependencies and a C extension. 2) A script to create a 'wheelhouse' with compatible wheels only (`manylinux*` and `any`). 3) Scripts to build executables using Nuitka, PyOxidizer, Appimage, pex. 4) Portability tests (run executables in different linux distros) and performance benchmarks. 5) Readme and Makefile to run any step with single command. It's obviously not a very useful repo, but at least it helped me to explore this topic a little, maybe it could help to demonstrate my approach to the topic.

  • 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
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