(I think[!]) I understand the principles behind pipenv (and the other venvs) and frequently use them. However, I've never really understood why pipenv needs both a Pipfile and a Pipfile.lock file.
This answer implies, and this tutorial says
Now, once you get your code and Pipfile.lock in your production environment, you should install the last successful environment recorded:
$ pipenv install --ignore-pipfile
but it doesn't explain why Pipfile.lock needs to be used. i.e. what does the .lock file contain that Pipfile doesn't, and why is Pipfile good enough to be shared with another developer:
Now let’s say another developer wants to make some additions to your code. In this situation, they would get the code, including the Pipfile, and use this command:
$ pipenv install --dev
but isn't good enough to be used to replicate your environment in production?