It seems unreasonably hard to find out how to install an older Windows Python

… or, indeed, any Windows install.

Warning: this is a bit ranty.

Over in a recent Python Users topic:

I’m suggesting to an end user that they install a 3.9 Python to deal with an install issue for a qt6 package (pyqt6-tools).

So I went to point them to instructions. python.org redirects to the /3/ documentation page. The only mention of “install” on that page is about packages i.e. after Python itself is already installed.

I had to go to the Windows page, itself only mentioned on the " Python Setup and Usage" page. And that wasn’t very helpful either.

That page says " To make Python available, the CPython team has compiled Windows installers (MSI packages) with every release for many years." which turns out not to be completely true either (see later).

The only reference to the downloads is the word “release” in that sentence; the MS Store and Full Installer links just point further down the page. The Full Installer doesn’t mention where to get it!

So I backtracked to the not very prominent “releases” one-word link from earlier, which… takes me to a page mentioning “no, go over there!” to the downloads page. The latest 3.9 is 3.9.16, so I follow the download link which says “in security fixes only mode, no full installers here”. Right at the very bottom it mentions that 3.9.13 is the last full installer. So back to the downloads page and find 3.9.13’s download page, where the Windows 64 -bit version is the very last thing in the listing.

There are half a dozen places in the the above hunt-the-python-installer where there could be more obvious and useful and direct links for the Windows end user.

I do not know how the naive end user is supposed to do the above.

Cheers,
Cameron Simpson

2 Likes

Redirects from where?

Which Windows page?

While I’m not suggesting things couldn’t be made easier, we also don’t optimize for guiding people to install older versions of Python (and especially ones that are only in security mode), so I’m not explicitly surprised it took some steps to get to what you’re after.

Ah, it’s all doc pages, and nothing pointing to https://python.org (or more directly, Download Python | Python.org).

Feel free to submit a pull request. However, we should also emphasise that there are other providers of Python releases, and that python.org is just one source.

I guess if we’re in rant mode, we could really consider refactoring how releases which have no Windows installers are presented. I’d be surprised if 0.1% of Python Windows users are prepared to, or interested in, building their own Python, and less than that will be able to do so successfully, so a no-installer release perhaps should by default be (almost?) invisible to Windows users - it’s a special case presumably of interest mainly in “enterprise” settings with highly qualified people as the audience, who can be expected to find the information they need.

3 Likes

Redirects from where?

From the top level python.org/ to python.org/3/, which is fine. It
just wasted a little time looking for some more "top leveL’ stuff which
might mention a unified download/install page, eg a front page like:

  • python 3 docs
  • python2 docs
  • download/install kits

I accept that it’s usually good to land straight on the Python 3 docs.

Tried again now… and there’s a front page with much like the above.
I’m now confused. Blaming my browser’s URL completion maybe.

Ignore this remark please.

Which Windows page?

Indeed! having made the mistake of starting from the /3/ docs front
page I picked “Python Setup and Usage”: Python Setup and Usage — Python 3.12.1 documentation
whose “Using Python on Windows” like goes to: 4. Using Python on Windows — Python 3.12.1 documentation

On that page the “full installer” part has no links to the
downloads/releases and the MS Store part has no links to the Microsoft
Store (though I’d hope that at least it is easy to access from a Windows
desktop).

While I’m not suggesting things couldn’t be made easier, we also don’t
optimize for guiding people to install older versions of Python (and
especially ones that are only in security mode), so I’m not explicitly
surprised it took some steps to get to what you’re after.

It looks like my core issue is that somehow I missed the true
python.org front page and once off to eg the Windows help page there
were no links to the Windows installers.

However, the remarks about the full installers for Windows not being
available on the latest security-only releases, and the “last full
installer” version being mentioned (but not linked) down the bottom
still hold.

Cheers,
Cameron Simpson cs@cskk.id.au

Do you mean docs.python.org, because https://python.org doesn’t redirect you anywhere?

Hooo… Yes this is probably correct. Thanks.

Agreed. This keeps on being a point of confusion and complaint, where it would be less problematic if those versions had simply not existed.

Let’s suppose a Windows user wants to download Python 3.8. They’ll probably end up on this page, which lists a variety of versions that people simply shouldn’t need to care about (every single point release, in date order); and the first (highest-on-the-page) Python 3.8 is the source-only 3.8.16.

Landing on the 3.8.16 download page suggests that 3.11 would be better, but doesn’t say how to download an installer for the last binary release of 3.8.

So here’s my suggestion: Use the first column for feature releases. It would list each release once, in order (3.11 at the top, then 3.10, 3.9, 3.8, etc), with each one showcasing its latest version (3.10.10, 3.9.16), but with download links retained from the last version that has them. So that means that Python 3.8.16 would be shown, along with the links from 3.8.10 listed below it (with a minor annotation for clarity).

For all other releases, there’s the second column, although even there I’m dubious about the value (how many people actually need to download 3.12.0a3, and would it be better to bury that behind another click?). Maybe the landing page for 3.8 could also have links to all of the specific versions? Not sure at this point, as I’m not sure what the exact use-cases are and how those people would go looking for the installers.

1 Like

FWIW, I’ve run into the exact same issue helping users here, including as recently as a couple days ago here:

It took a good several minutes to find the precise link to the latest installer to send them (as they’d gotten confused and couldn’t find it themselves).

On one hand, I’m probably more familiar with the Python site and docs than the average user. On the other hand, how I normally download a specific Python version is just conda install python=X.Y.Z, heh.

Yup, I ended up pulling up the release PEP to find it; an average user would likely only have trial and error.

Do you mean the first table? A reorganization along those lines could be a good idea; I do think though that we should give users some indication that they are getting a release with known security issues rather than truly the latest point version. As such, I’d suggest that:

  • The left-most column containing the feature version link to that feature version’s page, as described below
  • Two columns be added, one “Latest installer release” and one “Latest source-only release”, with the relevant versions of each linked directly to the per-release download page
  • There be a page for each feature version with two prominent links/buttons up top: "Last binary release (with installers): X.Y.Z` and “Last source-only release (no installers): X.Y.Z” or something like that, and then listing all the releases for that feature version

I’m also not sure whether we need the second table, especially with the intermingled versions making it hard to read and follow, as opposed to just a link to the “all versions” page for users who want that.

Take this with a grain of salt, though—I have some experience with UI/UX, but as a Conda user where downloading and installing a different Python is as easy as conda install python=VERSION, and Conda has all the versions both bugfix and security-only, I and most of the users I assist am not exposed to this page as much as many/most.

At the moment, it’s two columns (plus the “latest version, here, grab this one most of the time” at the top). But yes, a table would be a better way to lay it out. Either way, it could simply be ordered by feature version, most recent at the top; there’d be no need to separate out the recommended release, as it’s simply “the most recent release of the most recent feature version”.

I’m seeing two tables, not too columns on

Are we perhaps looking at a different page? (Or are you on mobile or something, which I didn’t consider since users cannot download/install Python.org Python on such devices?)

Ah, yes we are. I went to python.org, and from the menu, went to Downloads, Windows. That led me here:

(This is also the same page you get to if you go to the page you were on and then select Windows.)

The base download page could probably be expanded into what I was suggesting, though. Just make each entry in the “Active Python Releases” table link to the latest release in that branch, and focus first on which Python you want, then on which OS you want it for.

1 Like

Just want to mention I made a tool to discover what versions of Python have Windows binaries and install one from the command line.

I don’t use a Windows machine for development now so the version list is a bit outdated, but that can be pretty easily amended (generation is automated), especially if someone is willing to adopt it. The installation code is basically done and won’t need any maintenance unless Python decides to restructure the installer (which I believe only happened exactly once for the entire history of Python).

I find the download navigation on python.org a bit too confusing myself, so tend to always get the latest versions from the good old FTP-style website:

https://www.python.org/ftp/python/

This lists all releases in form of a directory listing. Easy to navigate, no magic, and also easy to automate.

You still have to figure out which versions provide Windows installers, but that’s not hard, given that you can quickly move around.

1 Like

One thing to point out here is we technically don’t want users downloading old versions of Python 3.8 just to get to the installer. The fact that there is a newer release with security fixes means people would be installing an outdated, unsupported version just to get the installer. It also runs the risk of them filing bugs, etc. based on their outdated version.

I think this is asking a bigger question of whether we want python.org to direct people to other installer options or flat-out tell people they shouldn’t be installing Python 3.8 anymore from a Windows installer on the site and instead get it from somewhere else. Or an even bigger question of whether we should feel responsible for getting Python on Windows (or any other OS), or is it more of a system integrator’s problem (to steal a term from @steve.dower )?

What SHOULD they do? If someone currently has Windows 7 and wants Python, are we going to make it unnecessarily hard to do so, or are we going to just say “here’s the latest installer, be aware that this is now quite old, as is your OS”?

A clear “go get it from here” (with a link), or just “go get it somewhere else, you figure it out”? I hope you mean the former, but in that case, it’s not materially different from what I was saying, except that the site isn’t controlled by the PSF.

1 Like

Get Python from somewhere else probably.

I disagree with the term “unnecessarily” as we don’t release installers for security-only releases on purpose; don’t forget that releases are not an easy thing to do, hence why we stop doing more than a code dump at a certain point. We also don’t have a paid release manager position since it’s a 5-year commitment.

Plus Windows 7 is a bad example since that OS isn’t supported even by Microsoft anymore, so the user is already on unsupported software.

Not sure, but providing links out to 3rd parties is also a tacit endorsement which makes it complicated.

I say “unnecessarily” in terms of how hard it is to find the installers that already exist. After 3.8.10, there are no further Windows binaries; but 3.8.10 exists and is the last Python that’s available for Windows 7.

And yes, I am aware that Win 7 isn’t supported by MS any more. That’s why it’s not targeted. But there are still a quite significant number of people out there who use it, possibly because Win 10/11 simply won’t run on their hardware. So, yes, they also can’t run Python 3.12, and I’m not asking for that to change; but they CAN run Python 3.8.10.

1 Like

Another reason people on Windows might want to install 3.8 is simply to test whether their code will work on 3.8, for users who already have that installed (whether that’s a casual manual test run, part of setting up a CI/CD system with a full test matrix, or anywhere in between). In those cases, the changes from 3.8.10 to 3.8.16 are unlikely to matter much, and in fact it might well be desirable to get 3.8.10 simply because clients are more likely to have 3.8.10 than 3.8.16.

Get Python from somewhere else probably.

This is unhelpful to a novice, for whatever value of novice.

I disagree with the term “unnecessarily” as we don’t release installers for security-only releases on purpose; don’t forget that releases are not an easy thing to do, hence why we stop doing more than a code dump at a certain point. We also don’t have a paid release manager position since it’s a 5-year commitment.

So let’s take the motivating example for this case. The OP’s running a
modern Windows, but wants to try a third party package whose last
supported release involved Python 3.9.

1: We don’t want them installing the last version with an installer
because it lacks security fixes.
2: We don’t provide an installer for the secured versions, just the
source.

For a novice, building Python from source in daunting. I personally find
it daunting; my last expedition there (admittedly a few years ago)
foundered on difficulties getting a suitable OpenSSL version, let alone
whatever other libraries are optional extras but heavily used. I think
at the time zlib was in that bucket.

So, suppose the OP installs 3.9.13 because that has an installer. How
do they update that to 3.9.16 for the latest version with security
fixes? Forget the general case, let’s suppose they’re on a current
Windows 11.

What steps should they follow?

And after that: how to we make those steps clear to them?

Not sure, but providing links out to 3rd parties is also a tacit
endorsement which makes it complicated.

Yes, but offering nothing is a dead end for the usual novice.

Steve, does the MS Store offer older releases?

Is it feasible to at least provide a link to the MS Store for Windows
users? Would they be able to obtain a 3.9 there?

Cheers,
Cameron Simpson cs@cskk.id.au

2 Likes