from django.core.exceptions import ImproperlyConfigured from importlib import import_module def import_class(path): path_bits = path.split(".") if len(path_bits) < 2: message = "'{0}' is not a complete Python path.".format(path) raise ImproperlyConfigured(message) class_name = path_bits.pop() module_path = ".".join(path_bits) module_itself = import_module(module_path) if not hasattr(module_itself, class_name): message = "The Python module '{}' has no '{}' class.".format( module_path, class_name ) raise ImportError(message) return getattr(module_itself, class_name)