From a5561ed825d42b5c4711aaee88969cdfc234dc9e Mon Sep 17 00:00:00 2001 From: Steve Dower Date: Fri, 21 Aug 2026 14:36:36 +0100 Subject: [PATCH] gh-155254: Avoid warning about missing stdlib when using _pth files (GH-156015) (cherry picked from commit f8c93d43edfeaea33c5dbff20f394212cb5c157f) Co-authored-by: Steve Dower --- Doc/library/sys_path_init.rst | 2 ++ .../2026-08-18-14-19-51.gh-issue-155254.75TMlb.rst | 1 + Modules/getpath.py | 8 ++++---- 3 files changed, 7 insertions(+), 4 deletions(-) create mode 100644 Misc/NEWS.d/next/Core_and_Builtins/2026-08-18-14-19-51.gh-issue-155254.75TMlb.rst diff --git a/Doc/library/sys_path_init.rst b/Doc/library/sys_path_init.rst index e6c2cddbe842487..329e49253e91aa4 100644 --- a/Doc/library/sys_path_init.rst +++ b/Doc/library/sys_path_init.rst @@ -105,6 +105,8 @@ Please refer to :mod:`site`'s mechanism, such as :mod:`venv`, that many virtual environment implementations follow. +.. _sys-path-init-_pth-files: + _pth files ---------- diff --git a/Misc/NEWS.d/next/Core_and_Builtins/2026-08-18-14-19-51.gh-issue-155254.75TMlb.rst b/Misc/NEWS.d/next/Core_and_Builtins/2026-08-18-14-19-51.gh-issue-155254.75TMlb.rst new file mode 100644 index 000000000000000..4ebe0a417c3f3b8 --- /dev/null +++ b/Misc/NEWS.d/next/Core_and_Builtins/2026-08-18-14-19-51.gh-issue-155254.75TMlb.rst @@ -0,0 +1 @@ +Avoid warning about missing standard library when using :ref:`sys-path-init-_pth-files`. diff --git a/Modules/getpath.py b/Modules/getpath.py index 6199567bd777aa0..c322d5c4b4c251d 100644 --- a/Modules/getpath.py +++ b/Modules/getpath.py @@ -766,10 +766,10 @@ def search_up(prefix, *landmarks, test=isfile): # SANITY CHECKS # ****************************************************************************** -# Warn if the standard library is missing, unless pythonpath_was_set was set, as -# that skips parts of the stdlib directories calculation — assume the provided -# pythonpath is correct. This is how subinterpreters initialize the path for eg. -if not py_setpath and not pythonpath_was_set: +# Warn if we did a search for the standard library and couldn't find it. Never +# show a warning if paths were provided explicitly, since we trust the caller +# knows what they're doing even if the layout doesn't look "normal". +if not (py_setpath or pythonpath_was_set or pth): home_hint = f"The Python 'home' directory was set to {home!r}, is this correct?" if (not stdlib_zip or not isfile(stdlib_zip)) and (not stdlib_dir or not isdir(stdlib_dir)): hint = home_hint if home else f'sys.prefix is set to {prefix}, is this correct?'