Skip to content

Configuration helper: confusing wording for "directory for versioned Python commands" #187

Closed

Description

@sparrowt

Background

Python Installation Manager installed from https://www.python.org/downloads/ onto a Windows 11 machine which has a bunch of existing MSI installed versions of python.

Details

A terminal window appears during installation and prompts me as follows:

********************************************************************************

The directory for versioned Python commands is not configured.

This will prevent commands like python3.14.exe working, but will not affect the
python or py commands (for example, py -V:3.14).

We can add the directory to PATH now, but you will need to restart your
terminal to see the change, and must manually edit environment variables to
later remove the entry.
Add commands directory to your PATH now? [y/N]

I'm pretty familiar with python and use it extensively but this wording left me confused in the following ways:

  1. Which actual directory is this? Is this a version-agnostic directory managed by Python Installation Manager? Ideally it would print out the actual path - I like to know what is being added to my PATH.

  2. I don't understand this bit at all:

    and must manually edit environment variables to later remove the entry.

    if I choose to add this to my PATH, why must I remove it later?

Activity

  1. changed the title [-]Configuration helper does not explain "directory for versioned Python commands" well[/-] [+]Configuration helper: confusing wording for "directory for versioned Python commands"[/+] on Oct 9, 2025
  2. sparrowt commented on Oct 9, 2025

    @sparrowt
    Author

    For the benefit of those wondering what it actually does... having begrudgingly said "y" without fully understanding the consequences, I found the following had been added to my user PATH:

    C:\Users\tom.sparrow\AppData\Local\Python\bin
    

    although the directory doesn't yet exist, presumably because I haven't used py-manager to install any python runtimes yet.

  3. sparrowt commented on Oct 9, 2025

    @sparrowt
    Author

    I don't understand this bit at all:

    and must manually edit environment variables to later remove the entry.
    

    if I choose to add this to my PATH, why must I remove it later?

    I now wonder if what it means is: "if you want to later remove this, you will need to manually edit your PATH environment variable" which would make sense - however I do think the current wording is pretty confusing.

    Especially as the Python Installation Manager is intended to make things easier for new users (as a side observation, my experience so far with this auto-launched terminal window, is in fact much less user-friendly than the classic MSI installer - it didn't even offer to install a version of python for me which I'm fine with, but perhaps first-time users would expect? anyway this is off-topic...)

  4. zooba commented on Oct 9, 2025

    @zooba
    Member

    Yeah, some good points.

    1. Which actual directory is this?

    You found it, but printing it here isn't unreasonable. It is in fact the single directory that will be added to PATH and fully managed by the install manager, which seems like unnecessary explanation unless you've dealt with the past arrangement (multiple directories and managed by you).

    2. if I choose to add this to my PATH, why must I remove it later?

    Because there's no uninstall process. We don't get to run commands when you uninstall the install manager.

    However, py uninstall --purge will actually remove the path entry (as well as deleting any aliases in it, and any installed runtimes). It might be worth mentioning this here. Your point that the wording is confusing is well made.

    it didn't even offer to install a version of python for me which I'm fine with

    Because you already had one installed. If you didn't, it'd offer.

    It's probably no surprise that there's 100% chance of someone complaining about every possible choice here - we had people complain about installing a new runtime when they already had one installed, which is why it currently won't install a runtime if it detects one.

  5. pfmoore commented on Oct 9, 2025

    @pfmoore
    Member

    You found it, but printing it here isn't unreasonable.

    It might also be useful to have it displayed via some pymanager command after the initial setup, so that someone (like me) who initially chose not to add it to PATH can add it later without needing to hunt in the docs for the right directory to add. I'm not sure what the best subcommand would be - it feels like it fits best with pymanager list, but that's at least in part because there aren't that many subcommands to choose from. Maybe pymanager list --alias-dir?

  6. zooba commented on Oct 9, 2025

    @zooba
    Member

    It might also be useful to have it displayed via some pymanager command after the initial setup, so that someone (like me) who initially chose not to add it to PATH can add it later without needing to hunt in the docs for the right directory to add.

    Like pip, we display the path on every install if you don't have it in PATH (including py install --refresh, which just fixes up aliases without installing anything):

    Global shortcuts directory is not on PATH. Add it for easy access to global Python aliases.
    Directory to add: C:\Users\<NAME>\AppData\Local\Python\bin
    

    You can also py install --configure to re-run the configuration helper, which will let you just say "yes" and add it automatically.

  7. pfmoore commented on Oct 9, 2025

    @pfmoore
    Member

    Ah, I missed that. That seems like a reasonable solution 🙂

  8. sparrowt commented on Oct 10, 2025

    @sparrowt
    Author

    Thanks @zooba for each of your replies.

    Re the last (most off-topic! sorry) bit:

    Because you already had one installed. If you didn't, it'd offer.

    It's probably no surprise that there's 100% chance of someone complaining about every possible choice here - we had people complain about installing a new runtime when they already had one installed, which is why it currently won't install a runtime if it detects one.

    It's good to know that it would offer if I didn't have one already - I wouldn't expect it to automatically install one if I already had one, but I was a tad surprised when, after declining its offer to open the online help, the window just quit.

    It sounds like it's more helpful for first timers (no existing install) which is good - however I think the following case is pretty common and could be improved:

    • someone who has a previous version of python installed
    • visits https://www.python.org/downloads/ looking for latest python; clicks prominent Download Python install manager button
    • ends up finishing the first-run configure workflow but is then confused why it hasn't even offered to install latest python (or perhaps doesn't even realise that it hasn't installed one) seeing as they clicked the big button which was under the heading Download the latest version for Windows so it feels like it hasn't done what it said on the tin.

    Perhaps this should be split out to a separate ticket, but I think that case would cover a significant proportion of people - one possible improvement would be if the configure wizard had a final step which said something like:

    It looks like you already have the following versions of python installed:
    ...
    Python Install Manager is now installed - would you like to install the latest python (3.14.0)? [yN]

    perhaps?

  9. zooba commented on Oct 10, 2025

    @zooba
    Member

    Yeah, updating the first-run check to look for at least the version that's bundled (which will usually be the latest stable) seems like a good tweak.

    They're both related to first-run, so may as well stay here:

    • improved wording re: global shortcuts directory
    • improved check for already having the latest runtime vs. any runtime at all
  10. added
    enhancementNew feature or request
    and removed
    questionFurther information is requested
    on Oct 10, 2025
  11. self-assigned this
    on Oct 10, 2025
  12. added a commit that references this issue on Oct 10, 2025
    36ec58c
  13. sparrowt commented on Oct 14, 2025

    @sparrowt
    Author

    Many thanks, the bits of #190 related to this ticket look good 👍

  14. added a commit that references this issue on Oct 14, 2025
    f378d2a
  15. garretwilson commented on Aug 14, 2026

    @garretwilson

    This is indeed confusing. So if python and py already work without adding this to the path, why would I want to add this other directory to the path? Is it needed to run pip or something?

    Experts understand they need to add new programs to the path. They know that if the installer offers to add the program to the path for them, they should accept, because it's one less thing they need to do and, being automated, it's less error prone.

    But if python and py would be available already, then why is this needed? Basically the "explanation" is saying, "you don't need to add Python to the path as you're accustomed to doing; but would you like to anyway, because you may need it, but we won't tell you why."

  16. zooba commented on Aug 17, 2026

    @zooba
    Member

    python3.14 (for example) is only available if you add this path, as is pip/pip3.14/etc. and any other generated aliases for installed packages.

    But you're right, it's not necessary. If you only ever launch using py or an active virtual environment (as I personally do), then you don't need it. That's part of why it's optional. (The other parts are that we can't do it immediately on install, because it isn't supported by Windows, and because the terminal needs to be restarted and so the user needs to know it's just been done.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

enhancementNew feature or requestrelease-blockerDo not release without fixing this issue!

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions