code: def import_module_from_file(filename, only_if_newer_than=None):
      
      import imp
      path, name = os.path.split(filename)
      name, ext = os.path.splitext(name)
      name = name.split('.')[0]
      fobj, filename, data = imp.find_module(name, [path])
      if only_if_newer_than:
          for dep in only_if_newer_than:
              if os.path.getmtime(filename) < os.path.getmtime(dep):
                  raise ImportError("{} is newer than {}".format(dep, filename))
      mod = imp.load_module(name, fobj, filename, data)
      return mod
docs: Imports (cython generated) shared object file (.so)
  
      Provide a list of paths in `only_if_newer_than` to check
      timestamps of dependencies. import_ raises an ImportError
      if any is newer.
  
      Word of warning: Python's caching or the OS caching (unclear to author)
      is horrible for reimporting same path of an .so file. It will
      not detect the new time stamp nor new checksum but will use old
      module.
  
      Use unique names for this reason.
  
      Parameters
      ==========
      filename: string
          path to shared object
      only_if_newer_than: iterable of strings
          paths to dependencies of the shared object
  
      Raises
      ======
      ImportError if any of the files specified in only_if_newer_than are newer
      than the file given by filename.