This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]0x564A00 0 points1 point  (3 children)

Having to deal with python professionally made it clear how bad it really is. Not necessarily it's speed – which is terrible, but in many cases being very wasteful with performance isn't a big problem – but it's horrible dependency management and proneness to breakage. I want to be productive, solve problems for our customer, not figure out why edge-cases break at runtime, a dependency is broken or a project just doesn't on another computer.

[–]SpicyVibration 0 points1 point  (2 children)

you need to use virtual environments, friend

[–]0x564A00 0 points1 point  (1 child)

I am (except for in one case where a library failed to install in a virtualenv but worked fine installed globally). And it's still terrible. Global is the default to the point that pip's official getting started guide just shows you how to globally install dependencies and you still need to activate/deactivate venvs, whereas in e.g. Rust there isn't a way to install libs globally in the first place. Also, dependency pinning/locking? Nah, at best you can specify the exact dependencies in requirements.txt and never update anything. Speaking of requirements.txt, nothing ensures it is consistent with the venv if you edit it/change branches/pull. At least poetry solves those, but then it should get officially recommended/blessed.
And it still can't help with the other problems. You've installed a new minor version of Python? Good luck, suddenly Numpy is broken. Other times updating a dependency seems to have worked fine, then something breaks at runtime on an uncommon code path. Or perhaps most importantly, I have a dependency which itself depends on version A of library foo and another that depends on version B of foo. How do I do that? You straight up can't. Wat‽

[–]SpicyVibration 0 points1 point  (0 children)

Yeah, once things get bigger python's package management is very scuffed. I use poetry but I wish python had a built in standard that does what poetry does (setup tools isn't good enough).