There are a couple other tools that take the same approach, including PyOxidizer[3], which was written by a Mercurial maintainer.
[1] https://docs.bazel.build/versions/master/be/python.html#py_r...
[2] https://github.com/erain/bazel-python-example
[3] https://pyoxidizer.readthedocs.io/en/stable/overview.html