The older Python language, version 2.7, is being deprecated in macOS 10.15 Catalina and won’t be included in macOS 10.16. The same goes for other UNIX scripting languages.
Let’s focus on Python first because of its nuances of versions.
The Python Case
This is not as bad as it sounds. Python 3.0 was released way back in December, 2008. Python 3.0 made a fundamental break from some bad design choices in Python 2.x, which culminated in version 2.7. Accordingly, a lot of complex Python 2.x code just won’t run with Python 3.x and has to be rewritten.
But Apple never updated the default install in macOS and left Python at version 2.7 for longstanding backwards compatibility. For 10 years, it has been left up to users to install Python 3.x, a version which can be installed alongside of 2.7. The user then gets to select the environment. For all the details one this, see:
One way to look at this is that so long as users who needed Python 3.x could easily install it, there was no need or Apple to continuously manage a new version in each release of macOS starting in 2009. [The latest Python version is 3.7.3]
Apple’s Deprecation Statement
Knowing all this, we can now put Apple’s developer notes for 10.15 Catalina into proper perspective.
Scripting language runtimes such as Python, Ruby, and Perl are included in macOS for compatibility with legacy software. Future versions of macOS won’t include scripting language runtimes by default, and might require you to install additional packages. If your software depends on scripting languages, it’s recommended that you bundle the runtime within the app. (49764202)
Use of Python 2.7 isn’t recommended as this version is included in macOS for compatibility with legacy software. Future versions of macOS won’t include Python 2.7. Instead, it’s recommended that you run python3 from within Terminal. (51097165)
The bottom line is that you’ll still be able to install UNIX scripting packages like Perl, Python and Ruby into future versions of macOS, just as you could in the past. They just won’t be included by default in macOS 10.16 and beyond.
The advantage of this is that most Mac customers never use UNIX scripting languages, let alone drop into a UNIX shell. Apple won’t have to ship macOS with older versions of these languages. And I’m guessing it’s a security consideration. Also, note:
So it’s not really a big deal. Apple isn’t abandoning the UNIX underpinnings of macOS. Experienced UNIX users will be able to install what they need.
I predict, however, that one day in late 2020, a scientist will take delivery of a new Mac, open a Terminal window, and find Python (… Perl … Ruby) missing. There will be wailing and gnashing of teeth.
Send him/her to this article.
[Editor’s note: And perhaps also send them to Homebrew, should we all be fortunate enough that it remains in active development for many years to come!]