<Purpose>
    Enables a module and imports its commands into the seash commanddict.

  <Arguments>
    modulename: The module to import.

  <Side Effects>
    All commands inside the specified module will be inserted into the seash
    commanddict if possible.

    The file modulename.disabled will be removed from /modules/ indicating that
    this module has been enabled.

  <Exceptions>
    Exceptions raised by merge_commanddict()

  <Returns>
    None

def enable(commanddict, modulename):
  """
  <Purpose>
    Enables a module and imports its commands into the seash commanddict.

  <Arguments>
    modulename: The module to import.

  <Side Effects>
    All commands inside the specified module will be inserted into the seash
    commanddict if possible.

    The file modulename.disabled will be removed from /modules/ indicating that
    this module has been enabled.

  <Exceptions>
    Exceptions raised by merge_commanddict()

  <Returns>
    None
  """
  # Is this an installed module?
  if not modulename in module_data:
    raise seash_exceptions.UserError("Error, module '"+modulename+"' is not installed")

  if _is_module_enabled(modulename):
    raise seash_exceptions.UserError("Module is already enabled.")

  merge_commanddict(commanddict, module_data[modulename]['command_dict'])

  try:
    # We mark this module as enabled by deleting the modulename.disabled file
    os.remove(MODULES_FOLDER_PATH + os.sep + modulename + ".disabled") 
  except OSError, e:
    # If the file was deleted before we were able to delete it, it should not
    # be a problem.
    if not "cannot find the file" in str(e):
      raise
  
  try:
    initialize(modulename)
  except seash_exceptions.InitializeError, e:
    raise seash_exceptions.InitializeError(e)