Python for Windows (python-3.7.4.exe) location confusing
Hi all, The installer dialog mentions Python will be installed in something like $USERPROFILE\AppData\Local\Programs\Python\Python37-32 while at the same time suggesting it will be made available for all users through the "Install launcher for all users (recommended)". This is confusing -- if the package is to be made available for everybody, it shouldn't be installed somewhere under the profile folder of whomever is installing it, normally other people can't even access this folder at all. It should be installed in %Program Files(x86)%, unless it is a private installation indeed (the "Install launcher for all users" is unchecked). Is this an omission of sorts? Is one expected to correct this themselves, during installation -- I don't see where one would even specify the installation folder? [image: image.png]
On 29Aug2019 0152, Armen Michaeli wrote:
The installer dialog mentions Python will be installed in something like $USERPROFILE\AppData\Local\Programs\Python\Python37-32 while at the same time suggesting it will be made available for all users through the "Install launcher for all users (recommended)". This is confusing -- if the package is to be made available for everybody, it shouldn't be installed somewhere under the profile folder of whomever is installing it, normally other people can't even access this folder at all.
It should be installed in %Program Files(x86)%, unless it is a private installation indeed (the "Install launcher for all users" is unchecked).
Is this an omission of sorts? Is one expected to correct this themselves, during installation -- I don't see where one would even specify the installation folder?
The launcher is installed separately from the main Python installation. So everyone will have access to the launcher, but only you will have access to the Python install - if someone else on the machine installs Python as well, they won't have to install the launcher. It also means that regular users can install packages without needing to be admin, and without corrupting other user's installs. The settings you are looking for are under the second big button that says "Customize installation // Choose location". This is the second query like this I've had (well, forever, really) in the last couple of months, and my inclination is to make the launcher a per-user install by default. The main reason for making it as a per-machine install by default was because there was no other way to replace the Python 3.4 launcher, but I suspect that's less of an issue now. (If the old one wasn't replaced, it would take precedence over the new per-user one and wouldn't be able to find some newer versions of Python.) If that checkbox were not present on the front page of the installer and everything was only installed for you, would you still have raised this question? I'm trying to see if that would be a satisfactory fix. Cheers, Steve
29.08.19 18:35, Steve Dower пише:
The main reason for making it as a per-machine install by default was because there was no other way to replace the Python 3.4 launcher, but I suspect that's less of an issue now. (If the old one wasn't replaced, it would take precedence over the new per-user one and wouldn't be able to find some newer versions of Python.)
Would not be an issue with replacing the globally installed Python 3.7 launcher?
If that checkbox were not present on the front page of the installer and everything was only installed for you, would you still have raised this question? I'm trying to see if that would be a satisfactory fix.
What if place options for the Python interpreter and the Python launcher on separate pages? They are different programs which can be deinstalled independently.
On 29Aug2019 0851, Serhiy Storchaka wrote:
29.08.19 18:35, Steve Dower пише:
The main reason for making it as a per-machine install by default was because there was no other way to replace the Python 3.4 launcher, but I suspect that's less of an issue now. (If the old one wasn't replaced, it would take precedence over the new per-user one and wouldn't be able to find some newer versions of Python.)
Would not be an issue with replacing the globally installed Python 3.7 launcher?
No, since 3.5 the launcher has been installed with a consistent ID, which means there is only ever one registered installation. Prior to that, the ID was randomly generated for each installer build, so most of the time you'd have multiple registered installs that just stomped on each other's files (and uninstalling one would delete the file, rather than refcounting it properly). I'd have to test the upgrade step though - upgrading from a per-machine install to a per-user install will probably remove the per-machine one, though we should be able to detect the per-machine one and default to keeping it. This is the messiest part of installation...
If that checkbox were not present on the front page of the installer and everything was only installed for you, would you still have raised this question? I'm trying to see if that would be a satisfactory fix.
What if place options for the Python interpreter and the Python launcher on separate pages? They are different programs which can be deinstalled independently.
They already are on separate pages :) But the "Install now" button doesn't go to the next page, it jumps straight into laying down files, and since this one checkbox is the difference between needing admin or not (and if <=3.4 is installed, the launcher working or not), it made sense to promote it to the front page. As that last point may not be so important anymore, it might be time to remove it and simplify things further. Cheers, Steve
On 8/29/2019 11:35 AM, Steve Dower wrote:
The launcher is installed separately from the main Python installation. So everyone will have access to the launcher, but only you will have access to the Python install - if someone else on the machine installs Python as well, they won't have to install the launcher. It also means that regular users can install packages without needing to be admin, and without corrupting other user's installs.
I find the layout confusing as it is and suspect that people do not really cognize 'launcher' properly. The layout starts with the specific python to be installed, offers to install it with defaults, jumps to the launcher, which newcomers likely will not understand, and jumps back to offering the one customization for the specific python that does not require hitting the customization button, and which I believe is not available if one does. I believe that that launcher is not installed if it would be a downgrade. I do not understand the shield versus arrow icons. What I recommend: Install Python 3.x [Install now] with listed defaults, including no path. [ ] Add 3.x to path # this should be in the python install blue [Customize other features] of the installed python. --- # Some definite separation and distinction from python.exe install "This installer also installs the multiversion py.exe launcher if doing so would not be a downgrade. If you have admin access, we recommend installing one py.exe for all users. See xxx for how to use py.exe. [ ] Install py.exe for all users. -- Terry Jan Reedy
Terry Jan Reedy wrote:
"This installer also installs the multiversion py.exe launcher if doing so would not be a downgrade. If you have admin access, we recommend installing one py.exe for all users. See xxx for how to use py.exe. [ ] Install py.exe for all users.
It also means
+1, Particularly on this part. If the user installing Python has administrative access, I don't see much of a reason for them to have to install a separate launcher and installation. Recommending a global py.exe install for them seems to be far more straight forward. I'm not certain as to whether or not we are able to collect statistics on this, but I would not be at all surprised if the majority of users installing Python had administrative access on the device they're installing it on. While I think the ability to allow non-admin users to install packages in their own install is very useful, it should not come at the expense of making the process confusing for those with administrative privileges. Steve Dower wrote: that regular users can install packages without needing to be admin, and without corrupting other user's installs. Does this have any advantage over using a virtual environment? I can imagine this might be more simple for new users (since they don't have to do anything additional), but setting up a virtual environment to use for a separate set of packages is very straightforward nowadays with venv.
On Mon, 9 Sep 2019 at 06:28, Kyle Stanley <aeros167@gmail.com> wrote:
Steve Dower wrote:
It also means that regular users can install packages without needing to be admin, and without corrupting other user's installs.
Does this have any advantage over using a virtual environment? I can imagine this might be more simple for new users (since they don't have to do anything additional), but setting up a virtual environment to use for a separate set of packages is very straightforward nowadays with venv.
I think you underestimate how much of a barrier using a virtual environment is to a new user. In my experience, people expect to install Python, and then be able to install packages immediately. Learning about virtual environments usually comes a lot further down the learning path (*particularly* if the user is self-taught - maybe training courses get structured differently, but I suspect a lot of people learn Python by installing it and "looking stuff up on the internet"). And in case you're not aware, on Windows, if you have an all users install in the standard location (C:\Program Files), to install something you need to open a new console window running a shell "as administrator" (which is a non-obvious extra step that new users will probably have no idea how to do) and then run `pip install xxx` in that shell. Doing pip install from your working shell fails with permission errors, even if you have admin rights (pip doesn't include the mechanisms needed to "request elevation" for itself, and there's no straightforward equivalent of the Unix sudo command for this). Paul
Paul answered sufficiently for the venv part, but I wanted to address this point. On 09Sep2019 0621, Kyle Stanley wrote:
+1, Particularly on this part. If the user installing Python has administrative access, I don't see much of a reason for them to have to install a separate launcher and installation. Recommending a global py.exe install for them seems to be far more straight forward.
I'm not certain as to whether or not we are able to collect statistics on this, but I would not be at all surprised if the majority of users installing Python had administrative access on the device they're installing it on. While I think the ability to allow non-admin users to install packages in their own install is very useful, it should not come at the expense of making the process confusing for those with administrative privileges.
User with administrative privileges are by implication better able to handle decisions such as this. If they are not, they should not be administrating a machine. Anecdotally (since it's very hard to collect demographic data here), the majority of Python users under the age of 18 do not have administrative privileges. You are literally saying that these kids should be given a harder time installing Python than someone who owns and maintains their own machine. Forgive me for disagreeing with you. As I said on the bug related to this (https://bugs.python.org/issue37745), I'm happy to accept patches to improve the wording. I'm also willing to consider changing the default option for clean installs to not install the launcher for All Users (basically flip that checkbox, and perhaps remove it from the front page). But the flow of the installer has I believe proven itself well with a broad range of users. Nothing in this thread has come anywhere near suggesting otherwise with anything like the feedback I've heard from users. Cheers, Steve
On 9/9/2019 2:48 AM, Steve Dower wrote:
User with administrative privileges are by implication better able to handle decisions such as this. If they are not, they should not be administrating a machine. Most home machines are administered by people that should not be "administrating" a machine.
On 09Sep2019 1950, Glenn Linderman wrote:
On 9/9/2019 2:48 AM, Steve Dower wrote:
User with administrative privileges are by implication better able to handle decisions such as this. If they are not, they should not be administrating a machine. Most home machines are administered by people that should not be "administrating" a machine.
Correct, and by defaulting to per-user installs we help them avoid having to do it. I've trained the home "administrators" in my family to be skeptical of every UAC prompt they deal with, because they _shouldn't_ be administrators, as they're not prepared to make machine-wide decisions. It's worked out fine. (Unfortunately, Windows S and other ideas for further reducing their need to act as administrators have not taken off, probably because of the smugness of those who think that because *they* can handle full control of their machine, everyone else ought to be able to as well.) Perhaps one day when the Store install overtakes the traditional installer in popularity, we can consider adapting the traditional installer to assume that the person using it is actually prepared to be an administrator. Until then, I'm going to assume the person installing Python is representative of our user base, which (on Windows) is *not* pre-existing experts. If that means that pre-existing experts need to make an extra click or two, in my mind that's worth it to simplify the experience for those who are less experienced, and to avoid further ingraining poor decision making into our wide range of users. Cheers, Steve
On 8/29/2019 4:52 AM, Armen Michaeli wrote:
Hi all,
The installer dialog mentions Python will be installed in something like $USERPROFILE\AppData\Local\Programs\Python\Python37-32 while at the same time suggesting it will be made available for all users through the "Install launcher for all users (recommended)". This is confusing -- if the package is to be made available for everybody, it shouldn't be installed somewhere under the profile folder of whomever is installing it, normally other people can't even access this folder at all.
It should be installed in %Program Files(x86)%, unless it is a private installation indeed (the "Install launcher for all users" is unchecked).
Is this an omission of sorts? Is one expected to correct this themselves, during installation -- I don't see where one would even specify the installation folder?
Armen, do you understand that the py.exe launcher is a separate program from 3.7 python.exe and that it is a *multiversion* launcher and that only one copy of the program is needed on the system regardless of how many users have how many pythons installed and that it is best if the one copy is the latest possible version? -- Terry Jan Reedy
participants (7)
-
Armen Michaeli
-
Glenn Linderman
-
Kyle Stanley
-
Paul Moore
-
Serhiy Storchaka
-
Steve Dower
-
Terry Reedy