The virtual environment part isn't really very fragmented at all -- I believe all of those use virtualenv/venv under the hood for that and just add layers of additional features for package and/or interpreter management. (that part is where the fragmentation happens, especially packages.)
The virtualenv/venv decision pretty much boils down to are you py3 only? Use the venv module in the standard library. Do you still support py2? Then virtualenv.