Obviously, the question is what went wrong.
Personally I think the dev team gave users too much time to switch.
The Python devs should have only given users one or two years to upgrade. Making it clear that all support for Python 2 would end after that period.
Another mistake was that when originally released Python 3 did not offer enough shiny new things to convince people that going through the pain of upgrading was worthwhile.
They made this worse by backporting features from Python 3 to Python 2, something they should have never done. Python 2 should not have gotten any new features after the release of Python 3.
Python 3 advocates like to blame the users for not upgrading, but I think that is / was simply the result of the actions of the dev team which made staying with Python 2 too comfortable and moving to Python 3 not attractive enough.