]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-45471: Do not set PyConfig.stdlib_dir in Py_SetPythonHome(). (gh-28954)
authorEric Snow <ericsnowcurrently@gmail.com>
Thu, 14 Oct 2021 20:48:32 +0000 (14:48 -0600)
committerGitHub <noreply@github.com>
Thu, 14 Oct 2021 20:48:32 +0000 (14:48 -0600)
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

Lib/test/test_embed.py
Python/pathconfig.c

index 41e092019c49a3505635d811bad1de0894d4c678..4cbb4c2c1ce3668dcfd4d5957fd84c3a2047edfc 100644 (file)
@@ -1247,6 +1247,11 @@ class InitConfigTests(EmbeddingTestsMixin, unittest.TestCase):
             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 @@ class InitConfigTests(EmbeddingTestsMixin, unittest.TestCase):
             '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}
index 2ebb9d39b8c2cf653c5a4273cf40e730d59b6195..ad22222e000fc03ed85bf15dc1ee8c404da6085f 100644 (file)
@@ -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__);
     }
 }