- Managing python versions (no packaging/enviroments) Pyenv is the solution if you don't want to use a global OS version.
- Environments, you don't need anything that isn't bundled with python, `python -m venv env` is the "official solution" and works really well.
- Packaging your app for running in production, `pip freeze > requirements.txt` and `pip install -r requirements.txt` is the "official solution", it works well enough.
- Packaging a lib for public distribution, setuptools... I don't have enough experience there but not many people need to actually use it. But again it is the "official solution"
Pyenv is the only none standard tool that I would recommend.
As far as I'm concerned all of these are redundant or not needed: virtualenv, pipenv, poetry pyenv-virtualenv, and pip-tools.