Edit: the irony of picking on Python is that it's
long had support for
multiple Major.Minor versions to be installed on a system, at the same time. However, I've chosen to take the most extreme interpretation of what you're describing, which is that you want
complete control of the version. I've been there; done that. Built packages from scratch and installed them in a custom location, but that was a long, long time ago.
Which that's still about a year to a year and half between major version numbers for Ubuntu, with LTS versions getting security patches for 10 years. Either way, I don't see how this is better than Microsoft's support cycle.
Ubuntu has a 6 moth release cycle. Every 24 months, they do a LTS release that has a 5 year support window. The rest have a long enough support window to get you well past the next release. So, if you need to install a release newer than the latest LTS, you have to do at most 2 upgrades until the next LTS release, and then you can go for up to 5 years without upgrading.
The meaning of these distro releases is also different than Microsoft Windows. Windows ties major kernel & userspace API changes and OS features to its releases. Linux is more like a continuous integration model, where new features are being added all the time, the userspace API basically never changes, and the kernel API is always changing.
TL;DR: trying to equate the two is a very flawed comparison, in a lot of ways.
Sure I can probably upgrade more smoothly to a new major version as long as I'm on top of that, but I can't stick with say 22.10 past July this year and expect OS updates from Canonical because that's 22.10's EOL date.
Nobody is making you run Ubuntu. There are dozens of other distros to choose from, including true "rolling release" distros.
And this is the biggest issue with Linux. I can go get an old version of Python for Windows, install it, run it, and have no problems.
Again, that's a flawed comparison. When you install Python on a Linux system, it's normally global to the entire OS image. So, everything using it "sees" the new version and all of the libraries used by it and its modules need to be compatible. This has an upside and a downside. The upside is that security bugs can be fixed in the one "shared" install of Python. On Windows, you can have apps which each bundle their own version of Python and would
each need to be patched to get any fixes to it or its libraries. Most 3rd party software vendors aren't terribly diligent about releasing these patches, on a prompt basis.
Case in point: when the log4j vulnerability came out, I got hassled by my IT department because I had a piece of software which bundled its own Java runtime environment, including its own copy of the vulnerable log4j library. They had run some kind of scan which detected it, but they misidentified the software using it. It took us a few rounds of miscommunication before I understood what they were complaining about, and was able to find and remove the software package. More than a month after the vulnerability (and log4j fix) went public, its publisher
still had not released an updated version of their software which included the fixed version of log4j.
That said, if you
want to install Python in a nonstandard location, you absolutely can. You just need to do it in a way other than using the standard distro packages (unless you install it in a container, which is really your best option). Then, you can use whichever version you like, within the constraints of modules' external library version dependencies. However, if you just use a container, then you can have an entirely self-consistent and self-contained set of python executables, modules, and libraries that won't interact or interfere with the rest of your system.
I believe even Linus Torvalds said this is why Linux can't breakthrough to the mainstream as a replacement for Windows or Mac.
Eh, I mean, how many people are using Chromebooks? That's pretty much straight Linux, with the full fat userspace*, right there.
* In contrast to Android, which uses a Linux kernel with its own custom, slimmed-down userspace.