code: def try_imports(imports, fail_msg=None):
      
      msgs = []
      for imp in imports:
          try:
              exec imp
              break
  
          except Exception, inst:
              msgs.append(str(inst))
  
      else:
          if fail_msg is not None:
              msgs.append(fail_msg)
              raise ValueError('\n'.join(msgs))
  
      return locals()
docs: Try import statements until one succeeds.
  
      Parameters
      ----------
      imports : list
          The list of import statements.
      fail_msg : str
          If not None and no statement succeeds, a `ValueError` is raised with
          the given message, appended to all failed messages.
  
      Returns
      -------
      locals : dict
          The dictionary of imported modules.