4 ms·
So does this use a custom build of CPython linked against a different libc that's part of the package? That has been IME one of the major issues with distributi
by formerly_proven 6y ago
So does this use a custom build of CPython linked against a different libc that's part of the package? That has been IME one of the major issues with distributing binary packages of Python apps on Linux, because code built using glibc tends to use recent versions of common symbols, so in practice you can't run them on a system with a glibc older than the build system's glibc, meaning you have to build on some ancient Linux where everything is a pain.
Edit: Sounds like it:
> PyOxidizer uses custom Python distributions that are built in such a way that they are highly portable across machines.
- nickcw 6y agoThe page states that a static build is possible so you'll get a binary you can distribute to any machine at that point.
- quietbritishjim 6y agoWithout any more clarification that doesn't quite answer the question because libc is such a special beast. Typically (but maybe not always) "static build" on Linux really means "all libraries are statically linked except libc which is dynamically linked". To make something very portable across Linux distributions, rather than statically linking libc you would dynamically link against an old version of it, as newer versions are always backwards compatible with older versions.
- oefrha 6y ago> meaning you have to build on some ancient Linux where everything is a pain. Well, PyPA provides Docker images for manylinux﹡[1] and manylinux2014 isn’t that ancient, I found it mostly tolerable in my experience of building wheels for various computational packages of my own (depending on gmp, etc.). In fact even manylinux1 and manylinux2010 have been okay for me, but that of course depends on what libraries you need. The future of manylinux is defined in PEP 600[2], though I’m not sure about what has happened implementation-wise regarding the new scheme. [1] https://github.com/pypa/manylinux https://github.com/pypa/manylinux [2] https://www.python.org/dev/peps/pep-0600/ https://www.python.org/dev/peps/pep-0600/
- nethunters 6y ago> Specifying --target x86_64-unknown-linux-musl will cause PyOxidizer to use a Python distribution built against musl libc as well as tell Rust to target musl on Linux. [1] https://pyoxidizer.readthedocs.io/en/stable/packaging_static_linking.html https://pyoxidizer.readthedocs.io/en/stable/packaging_static...