Python download statistics for first quarter of 2013 show that Python 3.3 has finally overtaken Python 2.7 as the Python of choice. But are there still barriers to making this move?
This month has seen bug fix releases releases of the two distinct strands of Python. The latest production versions are 2.7.4 and 3.3.1. There was also a security fix source-only release of Python 2.6 which will continue to be in maintained in this mode for only another 6 months, until October 2013, five years after the final release of Python 2.6.
Python 2.7 is expected to be the last major release in the 2.x series with the Python maintainers focusing future efforts on the Python 3.x series.
So it is good news that users are finally starting to prefer the new as demonstrated by these figures, presented by Pythonista Ian Ozsvald on his blog.
This chart show that Python 3.3 downloads (533,000) initially exceeded those for 2.7 (495,000) in January 2013 when Python 3.3 accounted for 52% of all downloads. This proportion rose to 53% in February but fell back to 51% in March.
These figures relate only to Windows for which you have to download Python. On Linux, as on Mac it comes pre-installed. Python 2.7 has been the default on Ubuntu but Ubuntu 13.04 will make the transition, which should give Python 3.3 a welcome boost.
Osvald also started a discussion on Reddit/r/python on the topic of whether it is now time to switch to Python 3 and the consensus is that this is determined by library support and a "Who's On Python 3" list of the most popular Python projects (ranked by downloads per day) shows that almost three out of four are now available for Python 3. the most important omissions are Flask, MySQL-Python and porting of Boto is still under development.
On this Reddit thread someone speculates as to whether it is those in production environments who are sticking to 2.7 while academia is making the move to 3.x.
In fact MOOCs may be responsible for the continuing popularity of 2.7. I've installed Python five times in as many months for different online course - all the installations being slightly different - and only one of these was Python 3. As courses are repeated in future months, those that started out with Python 2.7 are likely to stick with it so holding back the pace of change.
For scientific use of Python, numpy, scipy and matplotlib are all available for Python 3 and scikit-learn has the status of nearly ported. Referring to an earlier thread on Reddit, raising the question of which version someone planning on doing graduate-level pysics should learn, Osvald states:
Last year I solidly recommended using Python 2.7 for scientific work (as many key libraries weren’t yet supported). I’m on the cusp of changing my recommendation.
He also comments that is still slightly too early for him to switch personally but he is writing Python 2.7 in a 3-like style to be ready for the transition.
The top comment on the thread giving advice to the physics student says:
Learn 3.3. It's the future and it fixes a LOT. The only reason to use 2.7 is if you're working on an existing project that's on it or you need one of the fewer and fewer libraries that is 2.7 only.