diff --git a/lib/spack/spack/cmd/module.py b/lib/spack/spack/cmd/module.py
index 315d9fc9266a5bda6f58e3b3056a3c21aafd8e22..a67f5c0c137b86a8d07c5d1478e165ed93df9c1e 100644
--- a/lib/spack/spack/cmd/module.py
+++ b/lib/spack/spack/cmd/module.py
@@ -22,21 +22,16 @@
 # along with this program; if not, write to the Free Software Foundation,
 # Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
 ##############################################################################
-import sys
 import os
 import shutil
-import argparse
+import sys
 
 import llnl.util.tty as tty
-from llnl.util.lang import partition_list
-from llnl.util.filesystem import mkdirp
-
 import spack.cmd
+from llnl.util.filesystem import mkdirp
 from spack.modules import module_types
 from spack.util.string import *
 
-from spack.spec import Spec
-
 description ="Manipulate modules and dotkits."
 
 
@@ -98,7 +93,6 @@ def module_refresh():
             cls(spec).write()
 
 
-
 def module(parser, args):
     if args.module_command == 'refresh':
         module_refresh()
diff --git a/lib/spack/spack/modules.py b/lib/spack/spack/modules.py
index d797af287d37eaf242e7662430eee8277136fae1..61624fbd703e8debe12d6ad294ae961501783eee 100644
--- a/lib/spack/spack/modules.py
+++ b/lib/spack/spack/modules.py
@@ -211,7 +211,11 @@ def use_name(self):
     def remove(self):
         mod_file = self.file_name
         if os.path.exists(mod_file):
-            shutil.rmtree(mod_file, ignore_errors=True)
+            try:
+                os.remove(mod_file)  # Remove the module file
+                os.removedirs(os.path.dirname(mod_file))  # Remove all the empty directories from the leaf up
+            except OSError:
+                pass  # removedirs throws OSError on first non-empty directory found
 
 
 class Dotkit(EnvModule):