The advice (python3.x -m venv + python -m pip install ) is good, but I think it is incomplete. What's the best practice for making the venv reproducible? pip freeze + pip install -r? What about upgrading or deleting a package? Also, what if I don't want to install pure development packages (black, mypy, pylint, doc generation packages etc.) in the deployment venv?