3 ms·
Because Python 3 existed for 10 years now, and a lot of new Python 3 features were backported to 2.7. In fact all new features in 2.7 were copied from Python 3.
by takeda 9y ago
Because Python 3 existed for 10 years now, and a lot of new Python 3 features were backported to 2.7. In fact all new features in 2.7 were copied from Python 3. People essentially said, "why should I migrate to Python 3 when it doesn't offer anything new and I don't care about unicode at all (in fact I like when I have to explicitly state what's unicode and what's not)"
Only after PSF declared in 2015 that 2.7 is maintenance-only and won't get any new features Python 3 picked up.
Many people say that reason for this is breaking changes, but the truth is people are lazy and they won't do extra work to convert until they get kick in the butt. Other languages did have breaking changes and people move on, because the old version was deprecated.
With Python for a long time not declaring EOL for 2.x people assumed 3.x will never happen and started resisting it. The FUD started and people were afraid of even trying it. It got to the point that someone was planning to release Python 2.8 that would backport all changes from Python 3 except unicode.