Start out with just pyenv. It's not complicated and helps a lot if you don't want system-wide updates to mess with your virtual environments (you don't). Even though pip may not be ideal, it works well enough. So far, more advanced alternatives for me created at least as many problems as they supposedly solved. See for yourself what issues you'll have (if any) and then pick the tools that solve them best. The editor/…
What was most important to me was predictable builds and you can roughly accomplish this by using pip-compile:
pip-compile -n --generate-hashes requirements.txt 2> requirements-compiled.txt
Update this and commit to your repository whenever you add a new project. It keeps track of the hashes that each package uses which isn't perfect but is a good stop-gap. Then install packages using requirements-compiled.txt only.
Other pure pip/python suggestion welcomed!