import platform | |
from importlib.util import find_spec | |
""" | |
Adapted from: | |
https://github.com/PyTorchLightning/pytorch-lightning/blob/master/pytorch_lightning/utilities/imports.py | |
""" | |
def _module_available(module_path: str) -> bool: | |
"""Check if a path is available in your environment. | |
>>> _module_available('os') | |
True | |
>>> _module_available('bla.bla') | |
False | |
""" | |
try: | |
return find_spec(module_path) is not None | |
except ModuleNotFoundError: | |
# Python 3.7+ | |
return False | |
_IS_WINDOWS = platform.system() == "Windows" | |
_DEEPSPEED_AVAILABLE = not _IS_WINDOWS and _module_available("deepspeed") | |
_FAIRSCALE_AVAILABLE = not _IS_WINDOWS and _module_available("fairscale.nn") | |
_RPC_AVAILABLE = not _IS_WINDOWS and _module_available("torch.distributed.rpc") | |