bpo-35797: Fix default executable used by the multiprocessing module (GH-11676)

This commit is contained in:
Steve Dower 2019-01-25 14:59:12 -08:00 committed by GitHub
parent 3bab40db96
commit 4e02f8f8b4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 22 additions and 1 deletions

View file

@ -29,12 +29,19 @@ __all__ = ['_main', 'freeze_support', 'set_executable', 'get_executable',
if sys.platform != 'win32':
WINEXE = False
WINSERVICE = False
_WINENV = False
else:
WINEXE = (sys.platform == 'win32' and getattr(sys, 'frozen', False))
WINEXE = getattr(sys, 'frozen', False)
WINSERVICE = sys.executable.lower().endswith("pythonservice.exe")
_WINENV = '__PYVENV_LAUNCHER__' in os.environ
if WINSERVICE:
_python_exe = os.path.join(sys.exec_prefix, 'python.exe')
elif _WINENV:
# bpo-35797: When running in a venv, we need to bypass the redirect
# executor and launch our base Python.
import _winapi
_python_exe = _winapi.GetModuleFileName(0)
else:
_python_exe = sys.executable