diff --git a/Lib/shutil.py b/Lib/shutil.py index 89d924dec8aa4e..e29fe4d83e9277 100644 --- a/Lib/shutil.py +++ b/Lib/shutil.py @@ -32,16 +32,6 @@ except ImportError: _LZMA_SUPPORTED = False -try: - from pwd import getpwnam -except ImportError: - getpwnam = None - -try: - from grp import getgrnam -except ImportError: - getgrnam = None - _WINDOWS = os.name == 'nt' posix = nt = None if os.name == 'posix': @@ -843,8 +833,14 @@ def _is_immutable(src): def _get_gid(name): """Returns a gid, given a group name.""" - if getgrnam is None or name is None: + if name is None: + return None + + try: + from grp import getgrnam + except ImportError: return None + try: result = getgrnam(name) except KeyError: @@ -855,8 +851,14 @@ def _get_gid(name): def _get_uid(name): """Returns an uid, given a user name.""" - if getpwnam is None or name is None: + if name is None: return None + + try: + from pwd import getpwnam + except ImportError: + return None + try: result = getpwnam(name) except KeyError: diff --git a/Lib/subprocess.py b/Lib/subprocess.py index d375514b2dd0a6..4b011e4ce55794 100644 --- a/Lib/subprocess.py +++ b/Lib/subprocess.py @@ -53,14 +53,6 @@ from time import monotonic as _time import types -try: - import pwd -except ImportError: - pwd = None -try: - import grp -except ImportError: - grp = None try: import fcntl except ImportError: @@ -875,7 +867,9 @@ def __init__(self, args, bufsize=-1, executable=None, "current platform") elif isinstance(group, str): - if grp is None: + try: + import grp + except ImportError: raise ValueError("The group parameter cannot be a string " "on systems without the grp module") @@ -901,7 +895,9 @@ def __init__(self, args, bufsize=-1, executable=None, gids = [] for extra_group in extra_groups: if isinstance(extra_group, str): - if grp is None: + try: + import grp + except ImportError: raise ValueError("Items in extra_groups cannot be " "strings on systems without the " "grp module") @@ -927,10 +923,11 @@ def __init__(self, args, bufsize=-1, executable=None, "the current platform") elif isinstance(user, str): - if pwd is None: + try: + import pwd + except ImportError: raise ValueError("The user parameter cannot be a string " "on systems without the pwd module") - uid = pwd.getpwnam(user).pw_uid elif isinstance(user, int): uid = user