diff options
author | Eric Snow <ericsnowcurrently@gmail.com> | 2021-10-14 20:48:32 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-10-14 20:48:32 (GMT) |
commit | 0bbea0723ee07f9d7ad9745f0e1875718ef38715 (patch) | |
tree | 0bbf9521b1a68f11d7696ac57da990f220c37414 | |
parent | 3cc56c828d2d8f8659ea49447234bf0d2b87cd64 (diff) | |
download | cpython-0bbea0723ee07f9d7ad9745f0e1875718ef38715.zip cpython-0bbea0723ee07f9d7ad9745f0e1875718ef38715.tar.gz cpython-0bbea0723ee07f9d7ad9745f0e1875718ef38715.tar.bz2 |
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
-rw-r--r-- | Lib/test/test_embed.py | 7 | ||||
-rw-r--r-- | Python/pathconfig.c | 5 |
2 files changed, 7 insertions, 5 deletions
diff --git a/Lib/test/test_embed.py b/Lib/test/test_embed.py index 41e0920..4cbb4c2 100644 --- a/Lib/test/test_embed.py +++ b/Lib/test/test_embed.py @@ -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} diff --git a/Python/pathconfig.c b/Python/pathconfig.c index 2ebb9d3..ad22222 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__); } } |