Today, my system updated to calibre 5.0. With this major release, calibre moved from python2 to python3
calibre has moved to using Python 3. This is because Python 2 was end-of-lifed this year. This should be completely transparent to calibre users, the only caveat being that some third party calibre plugins have not yet been ported to Python 3 and therefore will not work in calibre 5. For status on the various plugin ports, see here. This effort involved porting half-a-million lines of Python code and tens-of-thousands of lines of extension code to Python 3. This would not have been possible without the help of Eli Schwartz and Flaviu Tamas.
At least for me, this comes as a small surprise. I vividly remember the times when all kind of applications started the migration to python3 and the calibe author kind of refused due to it (e.g 1714107).
However, he outlines his reasons in detail in 1456642/comments/3 and stated that he would be willing to accept contributions for python3. And this is exactly what happened.
Since this was the last package relying on python2 on my system, I was finally able to delete python2 and more than 40 other python2 packages.