Sorry Python but it is what it is.
But running those pip commands you mentioned is only going to affect what version gets installed initially.
I donβt follow. If my package-lock.json specifies package X v1.1 nothing stops me from manually telling npm to install package X v1.2, it will just update my package.json and package-lock.json afterwards
If a requirements.txt specifies X==1.1, pip will install v1.1, not 1.2 or a newer version. If I THEN install package Y that depends on X>1.1, the pip install output will say 1.1 is not compatible and that it is being upgraded to 1.2 to satisfy package Yβs requirements. If package Y works fine on v1.1 and does not require the upgrade, it will leave package X at the version you had previously installed.