Source code for niftynet.utilities.util_import
# -*- coding: utf-8 -*-
""" check module to be imported"""
import importlib
import tensorflow as tf
[docs]def require_module(name,
min_version=None,
descriptor='Optional',
mandatory=False):
"""
Check if the module exists, and
satisfies the minimum version requirement.
Returns the imported module if it satisfies requirements.
Raises ImportError and AssertionError.
:param name:
:param min_version:
:param descriptor:
:param mandatory:
:return: the imported module
"""
name = '{}'.format(name)
log_level = tf.logging.fatal if mandatory else tf.logging.info
try:
the_module = importlib.import_module(name)
except ImportError:
log_level(
descriptor + ' Python module %s not found, '
'please install %s and retry if the application fails.',
name, name)
if mandatory:
raise
try:
if min_version is not None:
if isinstance(min_version, tuple):
version_number = the_module.__version__.split('.')
min_version = tuple(int(v) for v in min_version)
mod_version = tuple(int(v) for v in version_number)
else:
mod_version = the_module.__version__
min_version = '{}'.format(min_version)
assert mod_version >= min_version
return the_module
except AttributeError:
pass
except (AssertionError, NameError):
log_level(
descriptor + ' Python module %s version %s not found, '
'please install %s-%s and retry if the application fails.',
name, min_version, name, min_version)
if mandatory:
raise