Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Python 2.7 removed from macOS Monterey 12.3 beta (derflounder.wordpress.com)
44 points by zdw on Jan 27, 2022 | hide | past | favorite | 34 comments


Calling it a “deprecation” when it’s been removed entirely seems like a misuse of the word.


From the release notes: "Python Deprecations: Python 2.7 was removed from macOS in this update. Developers should use Python 3 or an alternative language instead. (39795874)"

What word, exactly, is being used dishonestly? Python 2 was removed from the default install because it is deprecated in favor of Python 3. There is nothing dishonest or unclear about that in the release notes. What word in that message do you regard as being "misused" in context?


Bye


These breaking changes are why macOS is becoming more and more frustrating to use. It’s pushed me away from Mac on the desktop but I’m still using a MacBook.

I’ve run into so many issues trying to compile projects, those with little to no maintenance, and even many popular ones. If macOS support is advertised, it often only works on 2-3 generations prior to the current release. Ubuntu LTS works out of the box far more often.

The fact that it was removed without justification (just “legacy”) and there’s no easy download tool (like there is for say rosetta) is very frustrating. Sure I can compile python2 myself, install w/macports and symlink, but I shouldn’t have to.


Seriously: what operating systems even still ship with Python 2.7? It's wild to expect Apple to make their default shipped version one from fifteen years ago. It's trivial to install Homebrew if you really need it, and this is something you'll do exactly one time. Python has shipped ten major versions since 2.7, you can't expect Apple to simply never upgrade what they're including by default.


Python 2.7 was released on 2010-07-03, the next Python major release after that was Python 3.2 on 2011-02-20, therefore there have been *nine* major releases since Python 2.7: 3.2 to 3.10.

Also since Python 2.7 was made EoL there have been 2 major releases: 3.9 and 3.10.

It's interesting MacOS will be the only desktop OS used by a significant number of people to type "python" in to the command line after a fresh install and get back an unknown command error.


Actually python2 has been removed from homebrew (it's possible to still install, you just need a custom tap I believe).


I think CentOS 7 still does.


I thought it’s a common wisdom that you don’t use the system interpreter, be it Perl or Python or whatever: it’s usually too old, incomplete, as is there to serve the OS’s own tooling and not you. The most you can use it for is the simplest of scripts or to bootstrap the real thing.

Apple says in the future you shouldn’t even rely on any scripting runtimes being there by default at all.


All true. It still doesn’t make it any less infuriating with someone marginally familiar with Python on MacOS being utterly flummoxed when they just type python myscript.py and expect it to either work or give them a comprehensible error message to install the right version. Sure, virtual environments, you say, but I guarantee you that people who aren’t using python as their daily professional driver probably aren’t using venv. So for these users getting rid of the system default old version is a good thing. Personally I wouldn’t remind relying on system installed python in MacOS if it was 3+ for many cases. I’m not using bleeding edge features in 90% of use cases so if I’m just trying to dash off a quick script that I expect to just work outside of a container (lots of personal automation ends up feeling like using containers is total overkill) I’ll use the system interpreter. If I’m doing a big boy work project I’ll use venv.


This absolutely.

Trying to keep clueless developers happy by hoarding unused tooling is a step in the wrong direction and leads to expected hand-holding.


I personally don't rely on system versions but lots of people do and that code makes its way everywhere. It's handy to be able to write higher-level code without installing a separate runtime or ensuring it's there...


Removing a sunsetted, deprecated language is hardly a breaking change. If you're going to use old stuff the onus is on you to do whatever crazy workarounds are needed. Python 3 came out almost 15 years ago.


"15 years ago" is a silly number, it wasn't usable then. Maybe 6 years ago when python 3.5 was released is a better comparison?

I agree with them getting rid of python2 though.


Maybe. Python 3.2 was fine, I moved my stuff over to that shortly after it came out in 2011. Waiting this long to upgrade 2.7 code is completely on the user.


Python 3.0 came out in 2008, python 2.7 was supposed to reach end of life in 2015, it was extended until 2020.

It's now 2022.

That's all the justification they need.


I find it amazing the lengths python 2 loyalists take to keep using it, and the ferocity when it was EOL'd (the second time).

I wonder how many people are still actively using it (not counting situations such as when OS ships with Python2 and upgrading will break important utilities)?


It has nothing to do with loyalists and everything to do with practicalities. I was responsible for a fairly big project in 2011 and we decided that Python was the language of choice for some of the components. We started out with Python 3... but then soon realized that a lot of libraries and tooling that were available for Python 2 were not available for Python 3. So, we had to convert our code to Python 2 and continue because we had already spent some time with it. In hindsight, we should have picked some other language than this god awful mess. It pains me to see that Python is the most used language today given their history of how they handled Python 2/3.


Why does that pain you? Given that they know how painful that move from 2 to 3 was, you can be sure that they will never even consider a break like that again.


Trust me I have no interest in using python 2. My issue is exactly what you stated: breaking lots of programs that relied on it being there. The fact that it's being removed in a minor update is even worse.


Yup. Photographers and the like are being slowly brickwalled by DisplayCAL (UI for colord, ArgyllCMS, used for many thing like cross-platform measuring/calibrating monitors) in an unmaintained by usable state being removed from package repos everywhere because of Python 2.7 removal.


> I find it amazing the lengths python 2 loyalists take to keep using it

You don't need to spin issues that can be purely technical in terms of personal traits like stubbornness.

Just keep in mind that software doesn't change itself, and if you have a python27 script written yesterday then it won't be magically ported to python37 during the night. Unless people do the work, that won't change. Given there are far more people using software than writing it, then I don't understand what leads you to believe that software is perpetually maintained and ported to newer releases.


Python 2 was originally going to be EOL'd in 2015, the announcement for which was in 2008. Only later was the EOL pushed back to 2020. So while it's only been officially "dead" for two years now, the writing had been on the wall for 12 years before that.

At this point it is stubbornness - I know software doesn't magically get ported and updated as time goes on, but I also acknowledge that if no one cares to update the software (or provide a replacement) in a 14-year window then that is on that package's community rather than everyone else. The baseline should not be dragged down to accommodate legacy software.

MacOS removing Python 2 support in a minor OS version bump was the wrong way of handling things, but in general you should not expect it to be available on modern platforms or be surprised at its removal (outside of pledged long-term support e.g. CentOS). And you can still use a VM or something, same as you would use DosBox to run old 16-bit software.


> what leads you to believe that software is perpetually maintained and ported to newer releases.

Apple has never hesitated deprecating and then removing apis. Right now they have translation software so you can run x86 apps on their arm hardware but guess what? In two years a release will come out that doesn’t have that anymore and apps that are unmaintained and haven’t been recompiled or ported to arm won’t work anymore.

The only argument there is is that it isn’t too nice to do this in a point release. But it wouldn’t surprise me if their hand got forced by some security issue that couldn’t be fixed. Obviously they aren’t going to make the huge investment required to fix it themselves, it’s dead technology.


> I find it amazing the lengths python 2 loyalists take to keep using it, and the ferocity when it was EOL'd (the second time).

I can see where they are coming from. I like Python, I dislike its old boys club of core team. By EOLing Python 2.7, they have officially stopped mucking with it for good, thus the language is finally "stable" in the sense that it won't keep changing under you while still being called Python. Some people just might happen to like it.


In a way, sure; but shouldn’t this have been a “macOS 11.0” or “macOS 12.0” change?

Slipping it into some minor update that many users will install without a second thought is not a reasonable thing. It could break software that people use, not realizing they depend on Python to use it.


I can see the argument. But I still think it's shifting the blame from the developers of this software that people use but which haven't bothered updating in over a decade.

EDIT: For the past, I don't know how many versions of macOS, you'd get the following message when running python2:

"WARNING: Python 2.7 is not recommended. This version is included in macOS for compatibility with legacy software. Future versions of macOS will not include Python 2.7."


True, except that's only been since catalina which is from 2019. While I get that programs can't practically run on a new OS decades later, I don't think we should be okay with such a short lifespan as on macOS.


But it isn't a short lifespan. Python 2 had it's original EOL in 2015. It's been 7 years since the date of the original EOL. Which is to say nothing about how much heads up they had before 2015.


Didn't Apple completely remove Java in 10.8 (Lion) which wasnt a major version number bump either?

I don't use MacOS, but others have mentioned it's been printing deprecation warnings for quite a while now.


In the days when it was OS 10.8, 10.9, etc. those were major versions, updated over a year and a half apart.

Apple may call it “12.3” now but it is still released every few weeks or months, with just as much randomness as 10.8.3 would have been.


Years ago Java would auto-install only when needed but in the case of a language version deprecated ages ago it seems like you’re complaining for the sake of wanting to complain. Install brew and get the old version if you really need it.


As someone who hates Apple, I don't see anything wrong with this. How many more major OS versions did you want them to keep supplying an EOL version of Python for?


Ubuntu LTS removed Python 2.7 from the default install in 18.04, almost four years ago.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: