[Python-checkins] bpo-45471: Do not set PyConfig.stdlib_dir in Py_SetPythonHome(). (gh-28954)

ericsnowcurrently webhook-mailer at python.org
Thu Oct 14 16:48:45 EDT 2021


https://github.com/python/cpython/commit/0bbea0723ee07f9d7ad9745f0e1875718ef38715
commit: 0bbea0723ee07f9d7ad9745f0e1875718ef38715
branch: main
author: Eric Snow <ericsnowcurrently at gmail.com>
committer: ericsnowcurrently <ericsnowcurrently at gmail.com>
date: 2021-10-14T14:48:32-06:00
summary:

bpo-45471: Do not set PyConfig.stdlib_dir in Py_SetPythonHome(). (gh-28954)

The change in gh-28586 (bpo-45211) should not have included code to set _Py_path_config.stdlib_dir in Py_SetPythonHome(). We fix that here.

https://bugs.python.org/issue45471

files:
M Lib/test/test_embed.py
M Python/pathconfig.c

diff --git a/Lib/test/test_embed.py b/Lib/test/test_embed.py
index 41e092019c49a..4cbb4c2c1ce36 100644
--- a/Lib/test/test_embed.py
+++ b/Lib/test/test_embed.py
@@ -1247,6 +1247,11 @@ def test_init_setpythonhome(self):
             self.fail(f"Unable to find home in {paths!r}")
 
         prefix = exec_prefix = home
+        if MS_WINDOWS:
+            stdlib = os.path.join(home, sys.platlibdir)
+        else:
+            version = f'{sys.version_info.major}.{sys.version_info.minor}'
+            stdlib = os.path.join(home, sys.platlibdir, f'python{version}')
         expected_paths = self.module_search_paths(prefix=home, exec_prefix=home)
 
         config = {
@@ -1257,7 +1262,7 @@ def test_init_setpythonhome(self):
             'exec_prefix': exec_prefix,
             'base_exec_prefix': exec_prefix,
             'pythonpath_env': paths_str,
-            'stdlib_dir': home,
+            'stdlib_dir': stdlib,
         }
         self.default_program_name(config)
         env = {'TESTHOME': home, 'PYTHONPATH': paths_str}
diff --git a/Python/pathconfig.c b/Python/pathconfig.c
index 2ebb9d39b8c2c..ad22222e000fc 100644
--- a/Python/pathconfig.c
+++ b/Python/pathconfig.c
@@ -530,13 +530,10 @@ Py_SetPythonHome(const wchar_t *home)
 
     PyMem_RawFree(_Py_path_config.home);
     _Py_path_config.home = _PyMem_RawWcsdup(home);
-    if (_Py_path_config.home != NULL) {
-        _Py_path_config.stdlib_dir = _PyMem_RawWcsdup(home);
-    }
 
     PyMem_SetAllocator(PYMEM_DOMAIN_RAW, &old_alloc);
 
-    if (_Py_path_config.home == NULL || _Py_path_config.stdlib_dir == NULL) {
+    if (_Py_path_config.home == NULL) {
         path_out_of_memory(__func__);
     }
 }



More information about the Python-checkins mailing list