What about pipenv, poetry, conda, setuptools, hatch, micropipenv, PDM, pip-tools, ActiveState platform, homebrew, or your Linux / BSD distro's package manager?
If Python is only managing Python code, the issues to be solved are VASTLY simpler. Just about anything works.
Once it has to deal with dynamic libraries, compiled code, plugins, build systems, etc. the combinatorial explosion just makes life suck.
It has become a better "glue code to solve your problem" than many other solutions and so people want to use it everywhere for everything.
It gets packaged in many different ways because it gets used in many different ways for many different purposes.
Yes, its dependency resolution could have been better, and lock files are nice (which can be emulated using constraints [1]) but I don't understand why people are so busy writing alternatives. I work on pretty sophisticated codebases on a daily basis and haven't used anything but pip.
[1] https://pip.pypa.io/en/stable/user_guide/#constraints-files