For deployment, Docker solves a lot of problems but there's a significant cost for local development.
This is the important point of Docker. If your app has dependencies that are outside of the Python ecosystem (especially the pita ones to install) Docker seems like an excellent solution. I have an app that requires Oracle drivers and some other binaries with custom compile options (not available through apt) on Linux and I really wish I had built it in Docker.
Virtualenv is literally a set of shims in your $PATH and some tooling to manage those sets. Pyenv is the same thing, but extends the concept out to your actual Python interpreter and lets you rapidly switch between them.
That said, main reason to do it is that python is a language of idioms and this is one. It's easier to take the trail than break your own.
I can see Docker being slower if virtualized, but on Linux, it’s just a fancier BSD jail, no?
Docker container is just the lazy solution