code: def get_modules_info():
      
      module_infos = []
      for (mod, name, version_attr) in Modules:
          if not fileutil.has_module(mod):
              continue
          if hasattr(mod, version_attr):
              attr = getattr(mod, version_attr)
              version = attr() if callable(attr) else attr
              module_infos.append("%s %s" % (name, version))
          else:
              # ignore attribute errors in case library developers
              # change the version information attribute
              module_infos.append(name)
      return u"Modules: %s" % (u", ".join(module_infos))
docs: Return unicode string with detected module info.