I never understand this complaint when Javascript/Typescript is sitting there with a mess of .lock and .json files across multiple tools that sometimes interoperate and sometimes don't.
Package management isn't a solved problem; Python employs standard patterns for it; Significantly better than chained Makefiles from my C-development days.
I didn't say it was a solved problem - it isn't! - but rather that I find python's solution particularly bad. The situation in C (and C++) is indeed even worse, I just haven't been doing that for the last decade. Things I've used in the last decade that all work better, in my opinion: Bundler, NPM, Maven, Cargo, and even Go's packaging.
I always liked python, but I didn't use it at all really for a very long time until recently, and I've just honestly been surprised by the poor state its packaging seems to be in.
NodeJS has NPM, which is simple. Usually when you want to run someone else's NodeJS project, you `npm install && npm start`. Most Python projects have a Dockerfile, which shows you how bad the actual package management is.
TS is just JS but with extra things that can go wrong (Babel etc) and not being able to use simple `require` syntax anymore and some not-very-automatic type checking that you don't need; I don't use it. It's like taking a steak fresh off the grill and smothering it with mayonnaise.
Package management isn't a solved problem; Python employs standard patterns for it; Significantly better than chained Makefiles from my C-development days.