this post was submitted on 06 Nov 2024
198 points (98.1% liked)

Programming

17511 readers
169 users here now

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you're posting long videos try to add in some form of tldr for those who don't want to watch videos

Wormhole

Follow the wormhole through a path of communities !webdev@programming.dev



founded 1 year ago
MODERATORS
 

So I'm no expert, but I have been a hobbyist C and Rust dev for a while now, and I've installed tons of programs from GitHub and whatnot that required manual compilation or other hoops to jump through, but I am constantly befuddled installing python apps. They seem to always need a very specific (often outdated) version of python, require a bunch of venv nonsense, googling gives tons of outdated info that no longer works, and generally seem incredibly not portable. As someone who doesn't work in python, it seems more obtuse than any other language's ecosystem. Why is it like this?

you are viewing a single comment's thread
view the rest of the comments
[–] lime@feddit.nu 22 points 2 weeks ago (1 children)

everyone focuses on the tooling, not many are focusing on the reason: python is extremely dynamic. like, magic dynamic you can modify a module halfway through an import, you can replace class attributes and automatically propagate to instances, you can decompile the bytecode while it's running.

combine this with the fact that it's installed by default and used basically everywhere and you get an environment that needs to be carefully managed for the sake of the system.

js has this packaging system down pat, but it has the advantage that it got mainstream in a sandboxed isolated environment before it started leaking out into the system. python was in there from the beginning, and every change breaks someone's workflow.

the closest language to look at for packaging is probably lua, which has similar issues. however since lua is usually not a standalone application platform it's not a big deal there.

[–] tyler@programming.dev 1 points 2 weeks ago (1 children)

and yet that all works fine in Ruby, which came out around the same time as Python and yet has had Bundler for 15 years now.

Python - 15+ package managers and build tools Ruby - 1

the closest language to look at for packaging is probably lua, which has similar issues. however since lua is usually not a standalone application platform it’s not a big deal there.

no the closest language is literally Ruby, it's almost the exact same language, except the tooling isn't insane and it came out only a few years after python.

[–] lime@feddit.nu 2 points 2 weeks ago

good point, ruby is a good comparison. although, ruby is very different under the hood. it's magically dynamic in a completely different way, and it also never really got the penetration on the system level that python did.

none of this is to take away from the fact that python packaging is bad. i know how to work it because i've been programming in python for 14 years, but trying to teach people makes the problem obvious. and yet.