We have to see if fullname refers to a module we can import.
        Some care is needed here because:

        import xxx   # tries to load xxx.so from any of the python import paths
        import aaa.bbb.xxx # tries to load aaa/bbb/xxx.so from any of the python import paths

def find_module(self, fullname, submodule_path=None):
        """
        We have to see if fullname refers to a module we can import.
        Some care is needed here because:

        import xxx   # tries to load xxx.so from any of the python import paths
        import aaa.bbb.xxx # tries to load aaa/bbb/xxx.so from any of the python import paths
        """
        # first see if we have this particular so has been loaded by
        # turicreate's extension library before
        ret = self.try_find_module(fullname, submodule_path)
        if ret is not None:
            return ret
        # nope. has not been loaded before
        # lets try to find a ".so" or a ".dylib" if any of the python
        # locations
        import sys
        import os
        # This drops the last "." So if I am importing aaa.bbb.xxx
        # module_subpath is aaa.bbb
        module_subpath = ".".join(fullname.split('.')[:-1])
        for path in sys.path:
            # joins the path to aaa/bbb/xxx
            pathname = os.path.join(path, os.sep.join(fullname.split('.')))
            # try to laod the ".so" extension
            try:
                if os.path.exists(pathname + '.so'):
                    ext_import(pathname + '.so', module_subpath)
                    break
            except:
                pass

            # try to laod the ".dylib" extension
            try:
                if os.path.exists(pathname + '.dylib'):
                    ext_import(pathname + '.dylib', module_subpath)
                    break
            except:
                pass
        ret = self.try_find_module(fullname, submodule_path)
        if ret is not None:
            return ret