docs: def load_plugins(self, plugin_dirs=None, quiet=True):
          """
          Load plugins in `sys.path` and :attr:`plugin_dirs`
  
          Parameters
          ----------
          plugin_dirs : list or tuple of string, optional
              A list or tuple of plugin directory path
          quiet : bool, optional
              If True, print all error message
  
          """
          from pkg_resources import working_set
          from pkg_resources import iter_entry_points
          from pkg_resources import Environment
  
          if plugin_dirs is None:
              plugin_dirs = []
              plugin_dirs.append(environment.get_system_plugins_directory())
              plugin_dirs.append(environment.get_user_plugins_directory())
  
          distributions, errors = working_set.find_plugins(
                  Environment(plugin_dirs)
              )
          map(working_set.add, distributions)
  
          if not quiet:
              # display error info
              for distribution, error in errors:
                  print distrubution, error
  
          for entry_point in iter_entry_points(self.ENTRY_POINT):
              # load entry point
              plugin = entry_point.load()
              # if plugin is callable and `manually` is True, initialize manually
              if callable(plugin) and getattr(plugin, 'manually', False):
                  # manually initialize plugin
                  plugin(self)
              else:
                  # automatically initialize plugin
                  self.register(entry_point.name, plugin)