Python versions can be quite annoying sometimes.
I run Ubuntu 1804LTS as my "daily driver" for messing around with code and for browsing, and it has python3.6 as a default; don't even get me started that there's still one or two things that want me to use python2 (it's very rare nowadays), but tiny incompatibilities of different py3 versions often crop up. Like, I just installed py-libp2p but was at first bewildered that following the repo install instructions failed - it turned out (1/2)

.. that i needed not just `python-dev` on my system, and not just `python3-dev`, but in fact i specifically needed `python3.7-dev` to avoid a compilation error. Sheesh.

@waxwing to be fair the library says that "py-libp2p requires Python 3.7" out right in the same instructions.
And the hard python2 requirement is dropped for 20.04 LTS.

@pleb oh no that was not a complaint about py-libp2p, and indeed i was not even slightly confused about the Py3.7 requirement. The docs are clear.

The problem is building a couple of the requirements involves compilation, which requires python headers, and that there are several different system packages for different versions of python makes it extremely fiddly. It took me a few minutes to go from seeing the error to knowing what to do, and I'm betting many others would be quite stumped.

@mkinitbtcio @pleb how does nixOS solve that problem (bear in mind you're talking to a noob about that) ?

@waxwing @pleb
when building a package / development shell in nix, all dependencies are statically linked, meaning you could have many python37 packages with different system dependencies as you can link specific sys dependencies/versions on a per package/package version basis.

you can also have multiple versions of system dependencies installed alongside each other, and only use specific ones for libp2p.

Follow

@waxwing @pleb let's say pkg X requires libusb 1.0.24 and Y requires 1.0.0, i will have no issues installing both on my system as each will statically link their specific libusb dependency, i will have both versions installed, but each are used only where they are needed

this is really useful for not requiring full system updates if you need to use specific versions of packages, which is fairly common in development workflows, but still useful for some desktop workflows

Sign in to participate in the conversation
#BlockRiot

The social network of the future: No ads, no corporate surveillance, ethical design, and decentralization! Own your data with Mastodon!