diff options
author | Gregory P. Smith <greg@krypto.org> | 2023-07-06 15:46:50 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-07-06 22:46:50 +0000 |
commit | c60df361ce2d734148d503f4a711e67c110fe223 (patch) | |
tree | 19092e94465dcef4b6ee032c8bc939eaaf20f727 /Lib/multiprocessing/spawn.py | |
parent | 76fac7bce55302a8e9a524d72f5384fd89e6dfde (diff) | |
download | cpython-c60df361ce2d734148d503f4a711e67c110fe223.tar.gz cpython-c60df361ce2d734148d503f4a711e67c110fe223.zip |
gh-90876: Restore the ability to import multiprocessing when `sys.executable` is `None` (#106464)
Prevent `multiprocessing.spawn` from failing to *import* in environments
where `sys.executable` is `None`. This regressed in 3.11 with the addition
of support for path-like objects in multiprocessing.
Adds a test decorator to have tests only run when part of test_multiprocessing_spawn to `_test_multiprocessing.py` so we can start to avoid re-running the same not-global-state specific test in all 3 modes when there is no need.
Diffstat (limited to 'Lib/multiprocessing/spawn.py')
-rw-r--r-- | Lib/multiprocessing/spawn.py | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/Lib/multiprocessing/spawn.py b/Lib/multiprocessing/spawn.py index 09f8a229d7c..f1af7709104 100644 --- a/Lib/multiprocessing/spawn.py +++ b/Lib/multiprocessing/spawn.py @@ -31,11 +31,13 @@ if sys.platform != 'win32': WINSERVICE = False else: WINEXE = getattr(sys, 'frozen', False) - WINSERVICE = sys.executable.lower().endswith("pythonservice.exe") + WINSERVICE = sys.executable and sys.executable.lower().endswith("pythonservice.exe") def set_executable(exe): global _python_exe - if sys.platform == 'win32': + if exe is None: + _python_exe = exe + elif sys.platform == 'win32': _python_exe = os.fsdecode(exe) else: _python_exe = os.fsencode(exe) |