aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/Lib/multiprocessing/spawn.py
diff options
context:
space:
mode:
authorGregory P. Smith <greg@krypto.org>2023-07-06 15:46:50 -0700
committerGitHub <noreply@github.com>2023-07-06 22:46:50 +0000
commitc60df361ce2d734148d503f4a711e67c110fe223 (patch)
tree19092e94465dcef4b6ee032c8bc939eaaf20f727 /Lib/multiprocessing/spawn.py
parent76fac7bce55302a8e9a524d72f5384fd89e6dfde (diff)
downloadcpython-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.py6
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)