[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