diff --git a/src/tools/x/src/main.rs b/src/tools/x/src/main.rs index 02c364dabf960..5e2eeb3b26c5a 100644 --- a/src/tools/x/src/main.rs +++ b/src/tools/x/src/main.rs @@ -28,12 +28,15 @@ fn python() -> &'static str { for dir in env::split_paths(&val) { // `python` should always take precedence over python2 / python3 if it exists - if dir.join(PYTHON).with_extension(EXE_EXTENSION).exists() { + + // The checks are `symlink_metadata().is_ok()` because of magic trickery used by Microsoft Store's + // Python installation with symlinks: they appear as symlinks with no targets. + if dir.join(PYTHON).with_extension(EXE_EXTENSION).symlink_metadata().is_ok() { return PYTHON; } - python2 |= dir.join(PYTHON2).with_extension(EXE_EXTENSION).exists(); - python3 |= dir.join(PYTHON3).with_extension(EXE_EXTENSION).exists(); + python2 |= dir.join(PYTHON2).with_extension(EXE_EXTENSION).symlink_metadata().is_ok(); + python3 |= dir.join(PYTHON3).with_extension(EXE_EXTENSION).symlink_metadata().is_ok(); } // try 3 before 2