diff options
-rw-r--r-- | Lib/subprocess.py | 15 | ||||
-rw-r--r-- | Misc/NEWS.d/next/Library/2022-01-16-14-07-14.bpo-40280.LtFHfF.rst | 4 |
2 files changed, 11 insertions, 8 deletions
diff --git a/Lib/subprocess.py b/Lib/subprocess.py index 33f022f..358f49a 100644 --- a/Lib/subprocess.py +++ b/Lib/subprocess.py @@ -65,16 +65,11 @@ __all__ = ["Popen", "PIPE", "STDOUT", "call", "check_call", "getstatusoutput", # NOTE: We intentionally exclude list2cmdline as it is # considered an internal implementation detail. issue10838. -try: +_mswindows = sys.platform == "win32" + +if _mswindows: import msvcrt import _winapi - _mswindows = True -except ModuleNotFoundError: - _mswindows = False - import _posixsubprocess - import select - import selectors -else: from _winapi import (CREATE_NEW_CONSOLE, CREATE_NEW_PROCESS_GROUP, STD_INPUT_HANDLE, STD_OUTPUT_HANDLE, STD_ERROR_HANDLE, SW_HIDE, @@ -95,6 +90,10 @@ else: "NORMAL_PRIORITY_CLASS", "REALTIME_PRIORITY_CLASS", "CREATE_NO_WINDOW", "DETACHED_PROCESS", "CREATE_DEFAULT_ERROR_MODE", "CREATE_BREAKAWAY_FROM_JOB"]) +else: + import _posixsubprocess + import select + import selectors # Exception classes used by this module. diff --git a/Misc/NEWS.d/next/Library/2022-01-16-14-07-14.bpo-40280.LtFHfF.rst b/Misc/NEWS.d/next/Library/2022-01-16-14-07-14.bpo-40280.LtFHfF.rst new file mode 100644 index 0000000..b7bd7ab --- /dev/null +++ b/Misc/NEWS.d/next/Library/2022-01-16-14-07-14.bpo-40280.LtFHfF.rst @@ -0,0 +1,4 @@ +:mod:`subprocess` now imports Windows-specific imports when +``sys.platform == "win32"`` and POSIX-specific imports on all other +platforms. This gives a clean exception when ``_posixsubprocess`` is not +available (e.g. Emscripten browser target) and it's slightly faster, too. |