Seeing this tweet from Guido van Rossum the other day prompted me to write this "OMG, Python 2 is going away SOON" article. You have definitely heard it before, but seriously, folks, the Python upstream community is ending support for Python 2 at the end of the year!

Let's stop saying "2020" because that sounds far away when, in fact, we are talking about January 1, 2020, which is two and half months from now. In this article, I'll provide some quick links and basic information to help you make the move to Python 3.

Moving to Python 3

I hope that you have already been convinced about why you should move to Python 3 but, if not, you should definitely check out Nick Coghlan’s Python 3 Q&A and Brett Cannon’s Why Python 3 exists (as recommended by the Python porting page). Speaking from my own experience, I find Python 3 to be much more consistent in language constructs and way more in line with the "batteries included" philosophy.

Personally, my hesitation would be directly related to how much of the ecosystem is already on Python 3. In other words, language adoption is often more about the ecosystem than it is about the language itself.

The ecosystem is ready

Let me assure you; the ecosystem is ready. According to the Python Porting DB nearly 90% of Fedora Python Libraries support Python 3. Perhaps more concerning for those of you who are still on Python 2, 80% of the libraries only support Python 3. If you have any doubts about the particular libraries you need, you can use the caniusepython3 tool to be sure.

If you are worried about how much work it will be to move to Python 3, well, the Python Community has also gone to great lengths to make it as easy as possible. Specifically, check out tools like Futurize (which passes Python 2 code through appropriate fixers and turns it into valid Python 3 code) and Modernize (which makes Python 2 code more modern for porting to Python 3). The community has also provided a linter that will prove to you that you have cleaned everything up.

However, all that said, there is always the problem of testing. No one at Red Hat or in the Python community can help you create tests that don't exist. If you don't have great test coverage, maybe this can be an opportunity to add tests. Then, the next time you want to do a refactor or introduce a new feature, you don't have to be so frightened :).

Heed the call

All in all, now's the time to heed Guido's call to action. Everything is ready for you to move. And, you really shouldn't have to do this again for a good long time, because Python 3 will be supported until the end of the Red Hat Enterprise Linux 8 lifecycle. If you can't commit quite yet, we still have your back for a couple more years with our expected retirement of Python27 in 2024.

Other resources

Last updated: July 1, 2020