diff options
author | Steve Dower <steve.dower@python.org> | 2023-02-06 15:55:32 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-02-06 15:55:32 (GMT) |
commit | 7a253103d4c64fcca4c0939a584c2028d8da6829 (patch) | |
tree | a6884e6a0cffde71f40336dadf027836558581a6 | |
parent | 46416b9004b687856eaa73e5d48520cd768bbf82 (diff) | |
download | cpython-7a253103d4c64fcca4c0939a584c2028d8da6829.zip cpython-7a253103d4c64fcca4c0939a584c2028d8da6829.tar.gz cpython-7a253103d4c64fcca4c0939a584c2028d8da6829.tar.bz2 |
gh-101543: Ensure Windows registry path is only used when stdlib can't be found (GH-101544)
-rw-r--r-- | Misc/NEWS.d/next/Windows/2023-02-03-17-53-06.gh-issue-101543.cORAT4.rst | 2 | ||||
-rw-r--r-- | Modules/getpath.py | 31 |
2 files changed, 14 insertions, 19 deletions
diff --git a/Misc/NEWS.d/next/Windows/2023-02-03-17-53-06.gh-issue-101543.cORAT4.rst b/Misc/NEWS.d/next/Windows/2023-02-03-17-53-06.gh-issue-101543.cORAT4.rst new file mode 100644 index 0000000..d4e2c6f --- /dev/null +++ b/Misc/NEWS.d/next/Windows/2023-02-03-17-53-06.gh-issue-101543.cORAT4.rst @@ -0,0 +1,2 @@ +Ensure the install path in the registry is only used when the standard +library hasn't been located in any other way. diff --git a/Modules/getpath.py b/Modules/getpath.py index 6a08838..9913fcb 100644 --- a/Modules/getpath.py +++ b/Modules/getpath.py @@ -582,7 +582,7 @@ else: # Detect prefix by searching from our executable location for the stdlib_dir if STDLIB_SUBDIR and STDLIB_LANDMARKS and executable_dir and not prefix: prefix = search_up(executable_dir, *STDLIB_LANDMARKS) - if prefix: + if prefix and not stdlib_dir: stdlib_dir = joinpath(prefix, STDLIB_SUBDIR) if PREFIX and not prefix: @@ -631,20 +631,6 @@ else: warn('Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]') -# If we haven't set [plat]stdlib_dir already, set them now -if not stdlib_dir: - if prefix: - stdlib_dir = joinpath(prefix, STDLIB_SUBDIR) - else: - stdlib_dir = '' - -if not platstdlib_dir: - if exec_prefix: - platstdlib_dir = joinpath(exec_prefix, PLATSTDLIB_LANDMARK) - else: - platstdlib_dir = '' - - # For a venv, update the main prefix/exec_prefix but leave the base ones unchanged # XXX: We currently do not update prefix here, but it happens in site.py #if venv_prefix: @@ -706,8 +692,9 @@ elif not pythonpath_was_set: pythonpath.extend(v.split(DELIM)) i += 1 # Paths from the core key get appended last, but only - # when home was not set and we aren't in a build dir - if not home_was_set and not venv_prefix and not build_prefix: + # when home was not set and we haven't found our stdlib + # some other way. + if not home and not stdlib_dir: v = winreg.QueryValue(key, None) if isinstance(v, str): pythonpath.extend(v.split(DELIM)) @@ -722,6 +709,11 @@ elif not pythonpath_was_set: pythonpath.append(joinpath(prefix, p)) # Then add stdlib_dir and platstdlib_dir + if not stdlib_dir and prefix: + stdlib_dir = joinpath(prefix, STDLIB_SUBDIR) + if not platstdlib_dir and exec_prefix: + platstdlib_dir = joinpath(exec_prefix, PLATSTDLIB_LANDMARK) + if os_name == 'nt': # QUIRK: Windows generates paths differently if platstdlib_dir: @@ -792,5 +784,6 @@ config['base_prefix'] = base_prefix or prefix config['base_exec_prefix'] = base_exec_prefix or exec_prefix config['platlibdir'] = platlibdir -config['stdlib_dir'] = stdlib_dir -config['platstdlib_dir'] = platstdlib_dir +# test_embed expects empty strings, not None +config['stdlib_dir'] = stdlib_dir or '' +config['platstdlib_dir'] = platstdlib_dir or '' |