Replicating is just "virtualenv --python=python3 venv && . ./venv/bin/activate && pip install -r requirements-frozen.txt". Am I missing something here? Yes, to be absolutely sure, you need to have the same versions of python, pip, setuptools, gcc (for C extensions), C library dependencies, etc. on both systems that do the build, but that's the case for pretty much any build system out there if you want repeatable builds.
And if you you just don't feel like dealing with that, you can just use Docker (aka "put my machine in a tarball and ship it").
What?! Seriously? That is not how it's supposed to work. Requirements.txt is already meant to be the frozen dependencies (like the output of pip freeze). Why change that? I much prefer how pip-tools does it with a new file, requirements.in that contains the unpinned direct dependencies. I thought poetry did the same thing but with pyproject.toml?
Modern languages do pretty much the same, just have a nicer wrapper for it.
And yes, as I said, a nice wrapper for management of it is missing in python. The main ideas/approach is the same though.
edit: also, how do you manage dev dependencies with requirements.txt and setup.py?
Again, not as polished experience, but the model matches.