Why no "python3.exe" nor "python3.N.exe" in conda environments on Windows?

I have noticed that on Windows, conda environments provide python.exe but not python3.exe nor python3.N.exe (where N is the minor version of cpython). This is different from Unixy operating systems, where all three of python, python3, and python3.N are provided.

When the outer context provides python3.exe and/or python3.N.exe, this leads to confusing, hard-to-debug situations where programs get different base versions of the language and/or different sets of available libraries depending on which of “python”, “python3”, “python3.N” you happen to use to start them. For example, pytest seems to prefer python3 to python when both are available, even if it’s been installed via conda, and thus tests inexplicably get run using the outer context instead of the conda environment you wanted.

Is there a configuration knob somewhere that will cause conda create to install python3.exe and python3.N.exe as well as the unqualified python.exe? Failing that, can anyone suggest a workaround? I am reluctant to start messing around manually with the contents of %CONDA_PREFIX% but I will if I have to…

(If it matters, I’m using miniconda.)

1 Like