diff --git a/Lib/multiprocessing/spawn.py b/Lib/multiprocessing/spawn.py index daac1ecc34b55e..2ac9e28fa968b3 100644 --- a/Lib/multiprocessing/spawn.py +++ b/Lib/multiprocessing/spawn.py @@ -170,7 +170,10 @@ def get_preparation_data(name): if util._logger is not None: d['log_level'] = util._logger.getEffectiveLevel() - sys_path=sys.path.copy() + sys_path=[] + for path in sys.path: + if sys.base_prefix not in os.path.abspath(path): + sys_path.append(path) # For cross-interpreter support try: i = sys_path.index('') except ValueError: @@ -226,7 +229,11 @@ def prepare(data): util.get_logger().setLevel(data['log_level']) if 'sys_path' in data: - sys.path = data['sys_path'] + sys_path = data['sys_path'].copy() + for path in data['sys_path']: + if path in sys.path: + sys_path.remove(path) + sys.path.extend(sys_path) # For cross-interpreter support if 'sys_argv' in data: sys.argv = data['sys_argv'] diff --git a/Misc/NEWS.d/next/Library/2025-03-24-12-37-35.gh-issue-131656.7PiFWH.rst b/Misc/NEWS.d/next/Library/2025-03-24-12-37-35.gh-issue-131656.7PiFWH.rst new file mode 100644 index 00000000000000..e7c1021d3f2f44 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2025-03-24-12-37-35.gh-issue-131656.7PiFWH.rst @@ -0,0 +1 @@ +Fixed the cross-interpreter issue of subprocess module by modifying :func:`multiprocessing.spawn.prepare` and :func:`multiprocessing.spawn.get_preparation_data`. Contributed by pypy66.