If you need old-version retrieval on a routine basis, library regression testing has a problem. This gives package developers an excuse to break backwards compatibility. Historically, Python has avoided that, except for the Python 3 debacle.
And if you don't want that (for example if you distribute a library), you can still distribute the project without the lockfile, and then have the users distribute the lockfile back to you to get a repeatable error.